根据条件汇总数据帧行

时间:2018-08-10 06:36:32

标签: python python-3.x

我有这张桌子

A B C E
1 2 1 3
1 2 4 4
2 7 1 1
3 4 0 2
3 4 8 3

现在,我想删除基于A列和B列并同时总结列C的重复项。对于E,它应采用C表示最大值的值。理想的结果表应如下所示:

A B C E
1 2 5 4
2 7 1 1
3 4 8 3

我尝试了这个操作:df.groupby(['A', 'B']).sum()['C'],但是我认为我没有适当地合并E列部分,因此我的数据框根本没有改变...有人可以建议吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果第一行和第二行重复,我们可以将它们分组。

In [20]: df
Out[20]: 
   A  B  C  E
0  1  1  5  4
1  1  1  1  1
2  3  3  8  3

In [21]: df.groupby(['A', 'B'])['C'].sum()
Out[21]: 
A  B
1  1    6
3  3    8
Name: C, dtype: int64
  

我尝试了这个:df.groupby(['A','B'])。sum()['C'],但我的数据框完全没有改变

是的,这是因为熊猫没有覆盖最初的DataFrame

In [22]: df
Out[22]: 
   A  B  C  E
0  1  1  5  4
1  1  1  1  1
2  3  3  8  3

您必须明确地覆盖它。

In [23]: df = df.groupby(['A', 'B'])['C'].sum()

In [24]: df
Out[24]: 
A  B
1  1    6
3  3    8
Name: C, dtype: int64