Python-Pandas:如何对指定列值相同的行自定义合并数据?
解决方法
你可以通过给agg()方法传入字典,为不同列指定自定义的聚合逻辑,实现保留指定前两列内容并对数值列求和的需求:
示例代码
import pandas as pd # 构造原始数据 data = { 'CustomerID': ['1899', '1899B'], 'CustomerName': ['CustomerBlue', 'CustomerBlue'], 'ValA': [2, 3], 'ValB': [5, 6], 'ValC': [8, 7], 'ValD': [9, 8] } df = pd.DataFrame(data) # 分组聚合:自定义CustomerID取值,对数值列求和 result = df.groupby('CustomerName', as_index=False).agg( CustomerID=('CustomerID', lambda x: '1899'), # 手动指定CustomerID为目标值 ValA=('ValA', 'sum'), ValB=('ValB', 'sum'), ValC=('ValC', 'sum'), ValD=('ValD', 'sum') ) print(result.to_csv(index=False, header=False))
代码说明
groupby('CustomerName')按客户名称分组agg()中通过键值对定义每列的聚合规则:- 对
CustomerID使用lambda函数直接返回你需要的固定值(比如示例中的'1899'),如果想取分组内第一个ID,可改为lambda x: x.iloc[0] - 对所有Val开头的数值列使用
sum求和
- 对
输出结果
1899,CustomerBlue,5,11,15,17
内容的提问来源于stack exchange,提问作者user20948243
相关产品推荐
相关产品推荐

