首页 > 解决方案 > 无法将 DataFrame 列表保存到多表 Excel 电子表格

问题描述

我试图对这里的问题做同样的事情,并遵循答案给出的方法。这是我的代码:

import pandas as pd
import xlsxwriter

mylist=[df_1,df_2,df_3]

for n,df in enumerate(mylist):
    df=df[df['Name']=='Anna'].copy() # filter each dataframe in the list according to some condition
    # print(df) 
    writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
    df.to_excel(writer,'sheet%s' % n)
    writer.save()
    writer.close()

print(df)在 jupyter notebook 中使用来仔细检查循环是否有效并且每个数据帧都被成功过滤,并且确实如此。我的问题是,在输出的 excel 文件中,只有第一个过滤的数据框已保存,列表df_1sheet0的其他数据框尚未保存。

我的代码有什么问题?

标签: pythonexcelpandas

解决方案


您在循环内部有一些应该在外部的部分。在此处参考文档:https ://xlsxwriter.readthedocs.io/example_pandas_multiple.html

writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
mylist=[df_1,df_2,df_3]
for n,df in enumerate(mylist):
    df=df[df['Name']=='Anna'].copy() # filter each dataframe in the list according to some condition
    # print(df) 
    df.to_excel(writer,'sheet%s' % n)
writer.save()

推荐阅读