我有两个数据框,我想将它们分别写入 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)
你所拥有的已经差不多了,我想你在尝试将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
会创建一个元组,其中值是索引和列表中的项目,允许您索引另一个列表。
只是上述内容的变体,使用
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)