【发布时间】:2018-07-30 22:41:50
【问题描述】:
有没有一种方法可以对 DataFrame 的某些行进行 groupby 和 sum,但其余部分保持原样?例如我有 df:
df = pd.DataFrame({
'A' : ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
'C' : np.random.randn(8),
'D' : np.random.randn(8)})
看起来像:
A B C D
0 foo one 0.469112 -0.861849
1 bar one -0.282863 -2.104569
2 foo two -1.509059 -0.494929
3 bar three -1.135632 1.071804
4 foo two 1.212112 0.721555
5 bar two -0.173215 -0.706771
6 foo one 0.119209 -1.039575
7 foo three -1.044236 0.271860
现在我想对B 中的值为one 的行进行分组/求和(并将最后一次出现在A 列中)。所以输出将是:
A B sumC sumD
1 foo two -1.509059 -0.494929
2 bar three -1.135632 1.071804
3 foo two 1.212112 0.721555
4 bar two -0.173215 -0.706771
5 foo one 0.030545 -4.005993
6 foo three -1.044236 0.271860
如何做到这一点?
【问题讨论】:
-
我有点糊涂,所以最后一组
one的位置不重要吗?您可以通过接受的答案更改预期输出吗? -
不,这不重要。如果我愿意,我可以对行进行排序。接受的答案完美无缺,我不介意最后一组
one在哪里,只要求和即可。 -
好的,谢谢您的解释。所以我的答案将被删除。
标签: python pandas group-by sum