将多个数据帧写入 Excel 文件中的多个工作表

问题描述 投票:0回答:2

我有两个数据框,我想将它们分别写入 Excel 文件中自己的工作表。下面的代码实现了我想要的:

import pandas as pd

df_x = pd.DataFrame({'a':[1, 2, 3]})
df_y = pd.DataFrame({'b':['a', 'b', 'c']})

writer = pd.ExcelWriter('df_comb.xlsx', engine='xlsxwriter')

df_x.to_excel(writer, sheet_name='df_x', index=False)
df_y.to_excel(writer, sheet_name='df_y', index=False)

writer.save()
writer.close()

但是,在我的实际用例中,我有大量数据帧,并且不想为每个数据帧编写

to_excel
语句。无论如何,是否可以循环遍历数据帧列表来完成此操作,类似于:

for i in [df_x, df_y]:
    i.to_excel(writer, sheet_name = i, index=False)
python pandas
2个回答
4
投票

你所拥有的已经差不多了,我想你在尝试将sheet_name指定为DataFrame时也会遇到问题。我建议还列出您想要的表格名称。然后你可以做这样的事情:

names = ["df_x", "df_y"]
dataframes = [df_x, df_y]
for i, frame in enumerate(dataframes):
   frame.to_excel(writer, sheet_name = names[i], index=False)

如果您不熟悉它,

enumerate
会创建一个元组,其中值是索引和列表中的项目,允许您索引另一个列表。


0
投票

只是上述内容的变体,使用

zip
代替
enumerate

names = ["df_x", "df_y"]
dataframes = [df_x, df_y]
for name, frame in zip(names, dataframes):
   frame.to_excel(writer, sheet_name=name, index=False)
© www.soinside.com 2019 - 2024. All rights reserved.