gpt4 book ai didi

python - 使用列表中的名称创建数据框

转载 作者:行者123 更新时间:2023-12-04 02:26:43 24 4
gpt4 key购买 nike

我有包含许多选项卡的 excel 文件。我想连接所有这些,一次一个标签。

我在做:

mypath = "mypath"
files = os.listdir(mypath)
files = [os.path.join(mypath,f) for f in files if f[-4:]=='xlsx']

sheets = pandas.ExcelFile(files[0]).sheet_names

现在,假设我的选项卡是 alpha、beta、gamma 等,我想创建一个数据帧列表 df_alpha、df_beta 等,它们是我目录中文件的所有 alpha 选项卡的联合。

通过做:

for sheet in sheets:
df = pandas.DataFrame()
for f in files:
df = pandas.concat([df, pandas.read_excel(f, sheet_name=sheet)])

我可以得到我想要的,但当然我只有一个数据框,它是每个文件中最后一个选项卡的并集。我怎样才能更改代码,以便我有一个 dfs 列表,每个都命名为 df_alpha、df_beta 等?

最佳答案

如果您可以使用数据框字典,以下内容可能会有所帮助:

df_dict = {}
for sheet in sheets:
df = pandas.DataFrame()
for f in files:
df = pandas.concat([df, pandas.read_excel(f, sheet_name=sheet)])
df_dict[sheet] = df

稍后您可以使用其键从字典中调用相关的df,例如df_dict['alpha'].

更新:如@ALollz 的评论所述,上面的代码片段效率低下,因为对同一数据帧进行了多次连接。所以更有效的方法是:

df_dict = {}
for sheet in sheets:
df_dict[sheet] = pandas.concat(pandas.read_excel(f, sheet_name=sheet) for f in files)

请注意,在这种情况下,可以不在 pandas.concat 中定义明确的列表理解(内部表达式成为生成器)。

更新 2:也许使用字典理解更“pythonic”(使用更常见的 pd 而不是 pandas):

df_dict = {
sheet: pd.concat(pd.read_excel(f, sheet_name=sheet) for f in files)
for sheet in sheets
}

这里的技巧是使用上面的代码片段来定义具有字典理解的 key: value

关于python - 使用列表中的名称创建数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67083339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com