मेरे पास एकाधिक शीट वाली एक्सेल फ़ाइल है, और मैं लूप का उपयोग करके प्रत्येक शीट को एक अलग डेटाफ्रेम में सहेजना चाहता हूं।

countries = ['Thailand', 'China']
for country in countries:
    (country + '_data') = pd.read_excel(path, sheet_name = country)

हालांकि मुझे एक त्रुटि संदेश मिल रहा है: सिंटैक्स त्रुटि: ऑपरेटर को असाइन नहीं कर सकता

मुझे पता है कि असाइनमेंट गलत है, लेकिन एक सही लूप कैसे बनाया जाए जो प्रत्येक शीट के लिए अलग डेटाफ्रेम तैयार करे?

1
Polto 25 अक्टूबर 2019, 21:02

2 जवाब

सबसे बढ़िया उत्तर

एक बेहतर तरीका होगा

  1. बिल्ट-इन pd.ExcelFile विधि का उपयोग करना
  2. अपनी शीट को अलग डेटा फ़्रेम में रखने के लिए शब्दकोश का उपयोग करना।

उदाहरण के लिए:

xl = pd.ExcelFile(file)
print(xl.sheet_names)
['China','Japan','Pakistan'...] 

तो आप उन्हें एक तानाशाही को सौंप सकते हैं

d = {} # your dict.
for sheet in xl.sheet_names:
    d[f'{sheet}']= pd.read_excel(xl,sheet_name=sheet)

तो आप अपने व्यक्तिगत dfs . को कॉल कर सकते हैं

d['China'] 
3
Manakin 25 अक्टूबर 2019, 21:44

मुझे लगता है कि यह वह चीज है जिसे आप ढूंढ रहे हैं क्योंकि आपने लूप के लिए कहा था। ध्यान रखें कि लूप का उपयोग करने से df को वेरिएबल में असाइन करना कठिन हो जाता है।

यह भी ध्यान दें कि read_excel पहली शीट को 0 . के रूप में पढ़ता है

import pandas as pd

num_sheets = 3
sheets = dict()

for i in range(num_sheets):
    sheets[i] = pd.read_excel('./test.xlsx', sheet_name = i)

शीर्षक पर लूप शामिल करने का एकमात्र आसान तरीका शब्दकोश का उपयोग करना है।

यदि आपको लूप की आवश्यकता नहीं है तो आप केवल शीट नाम या संख्या निर्दिष्ट करने वाले read_excel भाग का उपयोग कर सकते हैं।

import pandas as pd

thailand_data = pd.read_excel('./test.xlsx', sheet_name = 'Thailand')
0
Gorlomi 25 अक्टूबर 2019, 22:57