【问题标题】:Create excel worksheet for every unique value in column of dataframe python为数据框python列中的每个唯一值创建excel工作表
【发布时间】:2019-08-09 05:06:22
【问题描述】:

我有一个非常大的 CSV 文件,其中包含 250,000 多条记录,需要一段时间才能在 Excel 中进行任何分析,因此我想根据我在 pandas 中创建的特定计算列将其拼接到多个工作表中。

特定列称为“Period”,是我的数据框中的字符串变量,格式为 MMM_YYYY(例如,Jan_2016、Feb_2016 等)

我正在尝试制作一些具有工作簿的东西(我们称之为 data_by_month.xlsx)在数据框列“Period”中的每个唯一时期都有一个工作表,所有匹配的行都写入相应的工作表中。

这是我尝试过的逻辑:

for row in df:
    for period in unique_periods:
        if row[38] == period:
            with pd.ExcelWriter("data_by_month.xslx") as writer:
                df.to_excel(writer, sheet_name = period)

这背后的想法是对于数据帧中的每一行,遍历唯一周期列表中的每个周期,如果 row[38](即 Period 的索引)等于一个周期,则写将其放入 data_by_month.xlsx 工作簿中,放入特定的工作表中。

我知道我的代码现在完全不正确,但这是我一直在尝试实现的一般逻辑。我很确定我指的是数据框中“期间”列的位置不正确,因为它一直说它超出了范围。欢迎任何建议!

非常感谢!

【问题讨论】:

  • 您能否发布几行 CSV。没有截图,纯文本复制粘贴。

标签: python excel pandas


【解决方案1】:

您应该能够在 pandas 中使用 groupby 来实现此目的。比如……

with pd.ExcelWriter("data_by_month.xlsx") as writer:
    for period, data in df.groupby('Period'):
        data.to_excel(writer, sheet_name = period)

【讨论】:

  • 这引发了 KeyError: 'period' -- 哦等等,因为它是大写字母 P,再试一次!
  • 发生了什么事,但不确定是什么 - 工作簿已创建,但我看到文件大小像疯了一样波动(上下波动 - 几乎就像它覆盖相同电子表格一遍又一遍)。脚本仍在运行;完成后将立即更新。这是一个大文件!
  • 好的,就在我输入的时候,它完成了。看起来它真的只是覆盖了每个时期。有没有办法让它保持为每个时期创建的每个电子表格?
  • 是的,with 语句应该在循环之外,我会更新我的答案
  • 万岁!乐于助人
猜你喜欢
  • 1970-01-01
  • 2022-08-17
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
相关资源
最近更新 更多