如何在Python中动态命名数据框?

时间:2019-07-24 06:35:42

标签: python python-3.x pandas list dataframe

我有一个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

如何动态创建数据框并命名呢?

4 个答案:

答案 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是工作表名称)。否则,您接下来将面临棘手的问题,即如何访问刚刚创建为自由浮动变量的所有数据框。