pandas 将groupby sum值分配给原始表的最后一行 [英] Pandas assign the groupby sum value to the last row in the original table

查看:96
本文介绍了 pandas 将groupby sum值分配给原始表的最后一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,我有一张桌子

A

id  price sum
1     2    0
1     6    0
1     4    0
2     2    0
2     10   0
2     1    0
2     5    0
3     1    0
3     5    0

我想要的是(sum的最后一行应该是组的price的总和)

What I want is like (the last row of sum should be the sum of price of a group)

id  price sum
1     2    0
1     6    0
1     4    12
2     2    0
2     10   0
2     1    0
2     5    18
3     1    0
3     5    6

我能做的是使用找出总和

What I can do is find out the sum using

A['price'].groupby(A['id']).transform('sum')

但是我不知道如何将其分配给sum列(最后一行).

However I don't know how to assign this to the sum column (last row).

谢谢

推荐答案

使用last_valid_index查找要填充的行

g = df.groupby('id')
l = pd.DataFrame.last_valid_index
df.loc[g.apply(l), 'sum'] = g.price.sum().values
df

   id  price  sum
0   1      2    0
1   1      6    0
2   1      4   12
3   2      2    0
4   2     10    0
5   2      1    0
6   2      5   18
7   3      1    0
8   3      5    6

这篇关于 pandas 将groupby sum值分配给原始表的最后一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆