微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas将groupby sum值分配给原始表中的最后一行

例如,我有一张桌子

一个

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

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

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

我能做的就是找出总和

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

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

谢谢

解决方法:

使用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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐