【问题标题】:Python/Pandas: writing multiple Dataframes to Excel sheets using a "for-loop"Python/Pandas:使用“for-loop”将多个数据框写入 Excel 工作表
【发布时间】:2019-08-23 20:50:51
【问题描述】:

我无法想象这个问题以前没有被问过,但我无法在这里找到答案: 我得到了一个 Excel 文件作为 Dataframe 并在其上使用了 Dataframe.groupby。现在我想为每个组使用不同的工作表将每个组保存到一个新的 Excel 文件中。我所能做的就是在每个文件中创建一个包含一组的新文件。我的新“解决方案”什么都不做。

df = pd.read_excel(file)
neurons = df.groupby("Tags")

#writing Keys into a list
tags = neurons.groups.keys()
tags = list(tags)


for keyInTags in tags:
     cells = group.get_group(keyInTags)
     cells.to_excel("final.xlsx", sheet_name=keyInTags)

我没有收到任何错误,但也没有收到新文件或写入现有文件。

【问题讨论】:

  • 您好!也许看看这里会有所帮助:stackoverflow.com/questions/42207319/…。我相信您需要在 for 循环之前打开一个文件,并在每次迭代时在每张纸上写入。
  • 如果你什么也得不到,那么tags 可能是空的。
  • 但如果我选择 print(cells),我得到的正是我想要的:所有的神经元都按它们的标签分组。

标签: python excel pandas dataframe


【解决方案1】:

对于仍在寻找的人来说,这是一个更清洁的解决方案:

import pandas as pd

df = pd.read_excel("input.xlsx")

with pd.ExcelWriter("output.xlsx") as writer:
    for name, group in df.groupby("column_name"):
        group.to_excel(writer, index=False, sheet_name=name[:31])

【讨论】:

    【解决方案2】:

    其实,我相信这是一个更好的解决方案。用以下代码替换你的 for 循环:

    writer = pd.ExcelWriter('excel_file_name.xlsx')
    
    for keyInTags in tags:
         cells = group.get_group(keyInTags)
         cells.to_excel(writer, sheet_name=keyInTags)
    
    writer.save()
    writer.close()
    

    【讨论】:

    • 是的,这就是我想做的事情 :) 非常感谢。我对编码完全陌生,“更好的解决方案”总是帮助我学习编写正确的代码。
    • 不客气。我也是新人,我只是尽可能地为 SO 社区做出贡献,因为它对我帮助很大。干杯!
    猜你喜欢
    • 2019-07-03
    • 2021-10-27
    • 2016-12-03
    • 2013-11-29
    • 2016-01-02
    • 2020-05-13
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    相关资源
    最近更新 更多