Python 基于条件聚合数据帧行
我有这张桌子Python 基于条件聚合数据帧行,python,python-3.x,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列部分……有人能给我建议吗 非常感谢 如果第一行和第二行是重复的,我们可以按它
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列部分……有人能给我建议吗
非常感谢 如果第一行和第二行是重复的,我们可以按它们分组
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
是DB的桌子吗?要按哪个字段对行进行分组?我要按除第一列(索引)和最后一列(非唯一)之外的所有列进行分组。同时,最后一列的值需要求和,因此聚合形式的第一个数据条目应在最后一列中显示值12(现在为1行)。如果使用pandas,您可以编辑问题并在其中添加列名称吗?也最好改变图片(从链接到真实图片)@danilmashkini添加了更好的可视化效果。你能回顾一下并让我知道你的想法吗?好的,那么另一个不完整的部分在E栏。这怎么能与我在原文中描述的条件联系起来呢?根据您的表格,第一行中的值E应为4,第二行中的值E应为3。请给我进一步的建议好吗?