重命名数据框架的循环函数



我是新的编码,目前我想从每个excel选项卡创建单独的数据框架。到目前为止,通过在这个论坛上进行搜索(我发现了一个使用字典的示例),但然后我需要一个我无法计算的步骤。

这是我使用的代码:

import pandas as pd
excel = 'sample.xlsx'
xls = pd.ExcelFile(excel)
d = {}
for sheet in xls.sheet_names:
print(sheet)
d[f'{sheet}'] = pd.read_excel(xls, sheet_name=sheet)

假设我有3个excel选项卡,分别是'alpha', 'beta'和'charlie'。上面的代码将给我3个数据帧,我可以通过输入:d['alpha'],d['beta']d['charlie']来调用它们。我想要的是重命名数据框,而不是通过输入(例如)d['alpha']来调用它们,我只需要写alpha(没有任何其他额外的)。

编辑:我想要解析的excel有50+制表符,它可以增长编辑2:感谢大家的链接和回答!这是一个很大的帮助

您需要创建对应于三个数据框的变量:

alpha, beta, charlie = d.values()

编辑:

既然你提到excel工作表可以有50多个制表符并且可以增长,你可能更喜欢做你原来的循环。这可以使用exec

动态地完成。
import pandas as pd
excel = 'sample.xlsx'
xls = pd.ExcelFile(excel)
d = {}
for sheet in xls.sheet_names:
print(sheet)
exec(f'{sheet}' + " = pd.read_excel(xls, sheet_name=sheet)")
但是,简单地索引您的表并通过索引访问它们可能是更好的实践。一个超过50个长度的excel表格的集合可能通过添加到列表并通过索引访问来更好地组织:
d = []
for sheet in xls.sheet_names:
print(sheet)
d.append(pd.read_excel(xls, sheet_name=sheet))
#d[0] = alpha; d[1] = beta, and so on...

不要重命名它们。

我能想到两种情况:

1。这两张表根本不同

当人们问如何动态分配变量名时,通常(也是最好的)答案是"使用字典"。这里有一个例子。

确实,这就是熊猫这样做的原因!

在这种情况下,我的意见是你最好什么都不做,就用你现有的字典。

2。床单大致相同

如果工作表基本相同,只有一个属性不同(例如,它们表示月销售额,工作表的名称是'May', 'June'等),那么你最好的做法是以某种方式合并它们,添加一个列来反映工作表名称(在我的例子中是month)。

无论你做什么,不要使用execeval,不管别人告诉你什么。它们不是初学者的选择。

我认为你正在寻找内置的exec方法,它执行字符串。但是我不推荐使用exec,它为什么不应该使用或者至少应该谨慎使用已经被广泛讨论过了。

由于我没有您的数据,我认为可以使用以下代码实现:

import pandas as pd
excel='sample.xlsx'
xls=pd.ExcelFile(excel)
for sheet in xls.sheet_names:
print(sheet)
code_to_execute = f'{sheet} = pd.read_excel(xls,sheet_name={sheet})'
exec(code_to_execute)

但是,我再次强调,这不是最干净的方法。你的方法显然更清晰,更准确地说,我总是用字典来做这类作业。关于exec的更多信息,请参阅此处。

一般情况下,您希望生成一个字符串。

possible_string = 'a=10'
exec(possible_string)
print(a) # 10

相关内容

  • 没有找到相关文章

最新更新