【问题标题】:How to summarize large dataframes in python pandas (50 columns x 2m rows)如何在 python pandas 中总结大型数据框(50 列 x 2m 行)
【发布时间】:2020-02-16 16:37:01
【问题描述】:

对于一个项目,我操作数据集的几列,然后将这些新创建的列连接回整个数据集,然后对操作的字段进行汇总。

操作和合并没有问题,但是 groupby 功能没有返回任何结果。我想知道如何找出为什么它没有返回任何东西。它加载代码,然后将结果打印在 Jupyter 笔记本中,其中仅包括我请求的列但返回了 0 行。

在使用 groupby 功能时,列有任何限制吗? - 我使用 40 个 groupby 列和 10 个字段数量字段进行汇总。

有没有我可以尝试的替代方案? - 我遇到了一些使用 numpy 的方法,这可能在内存中更有效。但真的找不到解决 40 列问题的有效方法。

我在网上搜索过,但找不到任何答案。 我是 pandas 的新手,所以在深入探讨这个主题之前,我只想咨询一下我是否忽略了某些东西,或者是否有更简单的方法来实现我想要的。

因为数据框有超过 40 列可以分组,大约有 10 个值字段,我将它们包含在两个列表对象中。 由于以下 stackoverflow 页面,这是我克服的第一个障碍。

这些列表随后用于 groupby 功能。

#A way i tried solving this, due to the limitation of only 9 variables if you enter them in your groupby functionality.

groupcolumns = ['aa','ab','ac','ad'] #etc
amountcolumns = ['z1', 'z2', 'z3', 'z4'] #etc

df1 = df.groupby(groupcolumns)[amountcolumns].sum
df1.reset_index()

我希望它会返回一个 DataFrame,该 DataFrame 汇总在金额列的 groupcolumns 上。

如果有人可以帮助我,那就太好了! 提前致谢。

【问题讨论】:

  • 我认为是数据本身的问题,但是没有证据(数据)我很难说。比如,你有缺失值吗?你是怎么处理的?
  • 试试这个df1 = df.groupby(groupcolumns)[amountcolumns].sum() 如果不起作用,请提供更多可重复的描述。
  • @QuantChristo 确实很抱歉,我写错了。
  • @powerPixie 这是一个通用数据模型,我无法共享,但确实有一些 NaN 值,因为并非总是填充所有列。会是这样吗?我应该只包含带有值的列吗?
  • @powerPixie 这确实是其中包含 NaN 值的一列,感谢您标记此问题,将验证我将来需要如何解决此问题。

标签: python python-3.x pandas-groupby summarize


【解决方案1】:

我注意到 40 列中的一列只有空值。

通过使用df.info(),然后我从 groupby 中删除了该字段,它就像一个魅力。

也许很好分享,这只是在 groupby(values) 中,我也有一些空字段包含在总和中,这些没有提供任何问题。

谢谢@powerPixie!!

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 2015-07-31
    • 2022-09-30
    • 1970-01-01
    • 2021-01-02
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多