Groupby 和 sum 几列 pandas

Posted

技术标签:

【中文标题】Groupby 和 sum 几列 pandas【英文标题】:Groupby and sum several columns pandas 【发布时间】:2019-09-29 01:11:00 【问题描述】:

我正在尝试按几列进行分组。一栏很容易,只需df.groupby('c1').['c3].sum()

原始数据框

c1    c2    c3
1     1    2
1     2    12
2     1    87
2     2    12
2     3    87
2     3    13

想要的结果

c2   c3(c1_1)    c3(c1_2)
1    2           87
2    12          12
3    (0?)        100

其中 c3(c1_1) 表示列 c3 的总和,其中 c1 的值为 1

我不知道如何在此应用 groupby。太好了,如果有人不仅会展示如何解决它,而且会展示没有这些愚蠢问题的阅读内容

【问题讨论】:

这不是一个愚蠢的问题,但不清楚。为什么列名发生了变化,预​​期的输出是什么?这是c3(c1_1) 中的 NaN 值吗? 下划线代表什么?我有点看到这种模式了 @roganjosh 谢谢你的评论。我现在添加了一些描述。 @kiyac 请提及您想要的结果。 【参考方案1】:

通过向groupby 提供列表,您可以一次按多列分组。如果您不介意输出格式略有不同,您可以通过

In [32]: df.groupby(['c2', 'c1']).c3.sum().unstack(fill_value=0)
Out[32]:
c1   1    2
c2
1    2   87
2   12   12
3    0  100

通过一些工作,这也可以按摩成您提供的形式。

【讨论】:

以上是关于Groupby 和 sum 几列 pandas的主要内容,如果未能解决你的问题,请参考以下文章

计算熊猫中的groupby(几列)平均值[重复]

Linq:GroupBy、Sum 和 Count

Laravel使用Sum和Groupby

如何根据与该 groupby SUM 的 AVERAGE 进行比较的 groupby SUM 进行选择

pandas基本应用记录

GroupBy 和 Sum,如果大于零标记行 True