我是一个新的编码,目前我想从每个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标签名为'阿尔法','测试'和'查理'。上面的代码将给我3个 Dataframe ,我可以调用它们键入:d['alpha']
,d['beta']
和d['charlie']
。我想要的是重命名 Dataframe ,这样就不用通过键入(例如)d['alpha']
来调用它们,我只需要写入alpha
(没有任何其他额外内容)。
编辑:我要解析的Excel有50多个选项卡,并且可以增长编辑2:谢谢大家的链接和答案!这是一个很大的帮助
3条答案
按热度按时间3okqufwl1#
不要重命名它们。
我可以想到两种情况:
1.床单有根本的不同
当人们问如何动态地为变量名赋值时,通常(也是最好)的回答是“使用字典”。Here's one example.
事实上,这就是Pandas这样做的原因!
在这种情况下,我的意见是,你最好的举动是什么也不做,只是使用你的字典。
2.床单大致相同
如果这些工作表基本上都是相同的,并且只有一个属性不同(例如,它们表示每月销售额,工作表的名称是“May”、“June '等),那么最好的方法是使用merge them somehow,添加一列来反映工作表名称(在我的示例中是month)。
无论您做什么,都不要使用
exec
或eval
,不管别人告诉您什么。初学者不适合使用它们。5ktev3wc2#
我想你正在寻找内置的
exec
方法,它执行字符串。但是我不推荐使用exec
,它确实被广泛讨论为什么不应该使用或者至少应该谨慎使用。由于我没有你的数据,我认为这是可以实现使用以下代码:
但是,我再次强调,这不是最干净的方法。您的方法肯定是干净的,更准确地说,我总是使用dict来进行这类赋值。有关
exec
的更多信息,请参见here。通常,您希望生成一个字符串。
idfiyjo83#
您需要创建与三个 Dataframe 对应的变量:
编辑:
既然您提到excel工作表可以有50多个选项卡,并且可以增长,那么您可能更愿意使用原来的循环。
不过,简单地为工作表建立索引并通过索引访问它们可能是更好的做法。50多个长度的Excel工作表集合可能通过追加到列表并通过索引访问来更好地组织: