如何对pandas DataFrame按列分组并对指定列求和生成新表
实现步骤
1. 导入依赖库
首先导入pandas:import pandas as pd
2. 构造测试数据(如果已有DataFrame可跳过此步)
df = pd.DataFrame({ 'CHAR': ['A', 'A', 'A', 'B', 'B', 'C'], 'VALUE': [10, 10, 10, 15, 15, 20], 'WEIGHT': [1, 2, 1, 4, 4, 6] })
3. 分组聚合计算
因为每个唯一CHAR对应唯一VALUE,分组时VALUE取首个值即可,WEIGHT对同组求和:
# 按CHAR分组聚合 temp_df = df.groupby('CHAR', as_index=False).agg( base_value = ('VALUE', 'first'), T_WEIGHT = ('WEIGHT', 'sum') ) # 计算T_VALUE temp_df['T_VALUE'] = temp_df['base_value'] + temp_df['T_WEIGHT'] # 提取最终需要的三列 result_df = temp_df[['CHAR', 'T_VALUE', 'T_WEIGHT']]
最终结果
输出result_df即可得到目标结构:
| CHAR | T_VALUE | T_WEIGHT |
|---|---|---|
| A | 14 | 4 |
| B | 23 | 8 |
| C | 26 | 6 |
补充校验(可选)
如果不确定每个CHAR对应的VALUE是否唯一,可先运行校验语句避免计算错误:assert df.groupby('CHAR')['VALUE'].nunique().eq(1).all(), "存在同CHAR对应多个VALUE的异常数据"
内容的提问来源于stack exchange,提问作者Nikita Voronin
相关产品推荐
相关产品推荐

