python - Pandas:如何在 groupby 之后将值分配给组的第一行?
问题描述
我试图在 groupby 之后将值分配给组的第一行?
输入:
编号
Aa 100
Bb 200
Cc 300
Bb 400
Aa 500
输出:
ID Num Sum
Aa 100 600
Aa 500
Bb 200 600
Bb 400
Cc 300 300
代码:
base_df['Sum'] = base_df.groupby(['ID'])['Num'].transform('sum')
但是,此代码将为组中的每一行分配值“Sum” :
我的输出:
ID Num Sum
Aa 100 600
Aa 500 600
Bb 200 600
Bb 400 600
Cc 300 300
解决方案
您可以使用分配duplicated
:
s = df.groupby(['ID'])['Num'].transform('sum')
df.loc[~df.duplicated("ID"), "Sum"] = s
print (df)
ID Num Sum
0 Aa 100 600.0
1 Bb 200 600.0
2 Cc 300 300.0
3 Bb 400 NaN
4 Aa 500 NaN
推荐阅读
- javascript - 无重复的随机图像
- alpine - alpinelinux 3.12 缺少 man 包?
- javascript - 当我部署 - 加载资源失败:服务器响应状态为 404 ()
- php - 整数未插入 MySQL 数据库错误
- javascript - 节点 JS 自动重新加载
- c++ - DirectX 11 如何在 GPU 上处理来自 sharedHandle 的图像
- javascript - 在 React JSX 中的映射数组内映射嵌套数组
- gtk3 - 在 vala 中管理 GTK .ui 文件中的信号
- python - 绑定鼠标滚轮 Tkinter
- c++ - 指向基类的唯一指针