我有一个Excel文件,其中包含30多张纸。但是,我在每张纸上执行的操作或多或少保持相同。但是我的目标是为每张图纸创建一个单独的数据框,以便将来我可以参考
这是我尝试过的,但是会引发错误
xls = pd.ExcelFile('DC_Measurement.xlsx')
sheets = xls.sheet_names
for s in sheets:
print(s)
'df '+ s = pd.read_excel(xls, sheet_name=s)
所以,这就像我要创建30个数据框,每个数据框都将工作表名称作为后缀名称。我尝试使用“ +”运算符,但它也无济于事。它引发了如下所示的错误消息
SyntaxError: can't assign to operator
如何动态创建数据框并命名呢?
答案 0 :(得分:4)
您可以使用类似这样的内容:
for s in sheets:
vars()['df'+ s] = pd.read_excel(xls, sheet_name=s)
答案 1 :(得分:2)
严格来说,这不是您问题的答案,但这将创建一个字典,其中的键是工作表名称,值是数据框。
workbook = pd.read_excel('DC_Measurement.xlsx', sheet_name = None)
然后,您可以像这样检索所需的数据框。
df = workbook['sheet_name']
我认为这比其他解决方案要整洁。
答案 2 :(得分:1)
或使用locals
:
for s in sheets:
locals()['df'+ s] = pd.read_excel(xls, sheet_name=s)
在函数中,将locals
更改为globals
。
答案 3 :(得分:1)
最好的方法通常是将数据帧存储在列表或字典中,您可以在其中系统地使用它们,如下所示:
xls = pd.ExcelFile('DC_Measurement.xlsx')
sheets = {}
for s in xls.sheet_names:
print(s)
sheets[s] = pd.read_excel(xls, sheet_name=s)
或者只是这个:
xls = pd.ExcelFile('DC_Measurement.xlsx')
sheets = {
s: pd.read_excel(xls, sheet_name=s)
for s in xls.sheet_names
}
这将使以后通过编程轻松处理工作表变得很容易(只需访问sheets[s]
,其中s
是工作表名称)。否则,您接下来将面临棘手的问题,即如何访问刚刚创建为自由浮动变量的所有数据框。