Python Pandas如何基于指定列重复值求和并保留分组首行
实现方案
完整可运行代码
import pandas as pd import numpy as np # 构建示例DataFrame df = pd.DataFrame({ 'Column A': [12,12,12, 15, 16, 141, 141, 141, 141], 'Column B':['Apple' ,'Apple' ,'Apple' , 'Red', 'Blue', 'Yellow', 'Yellow', 'Yellow', 'Yellow'], 'Column C':[100, 50, np.nan , 23 , np.nan , 199 , np.nan , 1,np.nan] }) # 计算Column D df['Column D'] = df.groupby('Column A')['Column C'].transform('sum') # 按Column A分组保留第一行,重置索引 result = df.drop_duplicates(subset='Column A', keep='first').reset_index(drop=True) # 输出结果 print(result)
步骤说明
- 分组求和逻辑:pandas的
sum()方法默认开启skipna=True,会自动忽略NaN值,等价于NaN按0计算,不管Column A对应的值是否重复,按Column A分组求和得到的结果刚好匹配需求里Column D的计算规则 - 去重逻辑:指定
subset='Column A'按A列去重,keep='first'保留每个分组的第一行,最后重置索引即可得到目标输出
内容的提问来源于stack exchange,提问作者new_bee
相关产品推荐
相关产品推荐

