首页 > 解决方案 > 为什么我的 for 循环会覆盖我的输出?

问题描述

我明白我做错了什么,但不知道如何解决它。我正在尝试将“Z”写入excel,然后在遍历所有列表条目后保存,但是DF中的索引会重置每次迭代并覆盖,所以我只看到我的最后一个列表条目,而不是全部5个。

任何帮助表示赞赏。

orig_df = (pd.read_excel("abc.xlsx"))

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

List1 = ['Market_A', 'Market_B', 'Market_C', 'Market_D', 'Market_E']

new_df = pd.DataFrame(columns=['Location','Data1','Data2','Data3'], index=range(5))

for i in range(len(List1)) :
        M = List1[i]
        P = List1[i]
        M = abc[abc.Location.str.contains(M)]

        Z = [{'Location': P , 'Data1': abc['Data1'].sum(), 'Data2': abc['Data2'].sum(), 'Data3': 
        abc['Data3'].sum(),}]

        Z = pd.DataFrame(Z)

        Z.to_excel(writer, sheet_name=P)

        i += 1

writer.save()

标签: pythonpandas

解决方案


因为我没有你的输入文件,所以我只是保存了一个小的测试数据框,但我可以毫无问题地保存所有 5 个页面:

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

for sheet_name in ['Market_A', 'Market_B', 'Market_C', 'Market_D', 'Market_E']:
    df = pd.DataFrame({'test1': [1,1,1], 'test2': [2,2,2]})
    df.to_excel(writer, sheet_name=sheet_name)

writer.save()

你能试试这个,看看你有没有问题?


推荐阅读