如何使用Pandas按Code列分组,为每行添加Thickness分组求和列?
如何用Pandas按Code分组并添加Thickness分组求和列?
原始数据集
| Name | Code | Thickness |
|---|---|---|
| CH1 | 3 | 0.5 |
| CH1 | 3 | 0.3 |
| CH1 | 4 | 0.4 |
| CH1 | 3 | 0.2 |
| CH1 | 5 | 0.6 |
| CH1 | 5 | 0.4 |
期望结果
| Name | Code | Thickness | Grp_Thickness |
|---|---|---|---|
| CH1 | 3 | 0.5 | 0.8 |
| CH1 | 3 | 0.3 | 0.8 |
| CH1 | 4 | 0.4 | 0.4 |
| CH1 | 3 | 0.2 | 0.2 |
| CH1 | 5 | 0.6 | 1.0 |
| CH1 | 5 | 0.4 | 1.0 |
实现方案
使用Pandas的groupby结合transform方法即可实现,transform能保留原始数据的行数,同时将分组计算结果映射到对应行。
代码示例
import pandas as pd # 构造原始数据 data = { 'Name': ['CH1', 'CH1', 'CH1', 'CH1', 'CH1', 'CH1'], 'Code': [3, 3, 4, 3, 5, 5], 'Thickness': [0.5, 0.3, 0.4, 0.2, 0.6, 0.4] } df = pd.DataFrame(data) # 生成分组求和列 df['Grp_Thickness'] = df.groupby('Code')['Thickness'].transform('sum') print(df)
代码说明
groupby('Code'):按照Code列的值对数据分组['Thickness'].transform('sum'):对每个分组内的Thickness求和,transform会将求和结果匹配到原数据的每一行,而非返回聚合后的分组结果- 最终生成的
Grp_Thickness列,每个值对应该行所属Code分组的Thickness总和,且保持原始数据的行顺序与行数
内容的提问来源于stack exchange,提问作者Adeleke Adejobi
相关产品推荐
相关产品推荐

