熊猫:将多张纸保存到单独的数据框中

时间:2019-10-25 18:02:26

标签: python pandas

我有一个包含多张工作表的Excel文件,我想使用循环将每张工作表保存到单独的数据框中。

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

但是我收到一条错误消息: SyntaxError:无法分配给运算符

我知道分配是错误的,但是如何建立正确的循环以为每个工作表生成单独的数据框?

2 个答案:

答案 0 :(得分:3)

更好的方法是

  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'] 

答案 1 :(得分:0)

我猜这是自您请求循环以来一直在寻找的东西。请记住,使用循环会使将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')