You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多列场景下Pandas基于字符串列去重并聚合数值列的高效方法问询

问题描述

数据中H1、H2列存在重复组合,需基于该组合去重并完成聚合:对指定数值列求和、其他指定数值列求均值。目前使用df_p.drop_duplicates(['H1','H2'])仅能实现去重,无法完成聚合。已知可通过groupby/pivottable实现,但数据包含50+列(20+字符串分组列、30+需聚合的数值列),需要无需逐个指定列的高效实现方案。

示例代码

import pandas as pd

df_p = pd.DataFrame({'H1':['A1','A1','C1','B1','A1','C1'],
                     'H2':['X1','Y1','Z1','X1','Y1','Z1'],
                     'V1':[11,7,8,4,12,6],
                     'V2':[110,70,80,40,120,60]})
# 当前仅执行去重的代码
df_p.drop_duplicates(['H1','H2'])

当前输出

H1  H2  V1  V2
0   A1  X1  11  110
1   A1  Y1  7   70
2   C1  Z1  8   80
3   B1  X1  4   40

期望输出

H1  H2  V1  V2
0   A1  X1  11  110
1   A1  Y1  19  95
2   C1  Z1  14  70
3   B1  X1  4   40
解决方案

方法1:批量构建聚合规则(基于列名特征)

通过列名特征(如前缀)批量定义聚合规则,无需逐个列名手动输入,适合列数较多的场景:

import pandas as pd

df_p = pd.DataFrame({'H1':['A1','A1','C1','B1','A1','C1'],
                     'H2':['X1','Y1','Z1','X1','Y1','Z1'],
                     'V1':[11,7,8,4,12,6],
                     'V2':[110,70,80,40,120,60]})

# 指定分组键
group_keys = ['H1', 'H2']

# 批量生成聚合规则:以V1开头的列求和,以V2开头的列求均值
agg_rules = {}
for col in df_p.columns:
    if col.startswith('V1'):
        agg_rules[col] = 'sum'
    elif col.startswith('V2'):
        agg_rules[col] = 'mean'
    # 可根据业务需求添加其他列的聚合规则

# 执行分组聚合,保留原列顺序
result = df_p.groupby(group_keys, as_index=False).agg(agg_rules)
print(result)

输出结果:

H1  H2  V1   V2
0  A1  X1  11  110.0
1  A1  Y1  19   95.0
2  B1  X1   4   40.0
3  C1  Z1  14   70.0

方法2:按列列表批量定义聚合

先筛选出需要求和和求均值的列列表,再合并为聚合字典,同样无需逐个列名输入:

# 筛选求和列和均值列(可根据列名或业务规则调整)
sum_cols = [col for col in df_p.columns if col.startswith('V1')]
mean_cols = [col for col in df_p.columns if col.startswith('V2')]

# 构建聚合字典
agg_dict = {col: 'sum' for col in sum_cols}
agg_dict.update({col: 'mean' for col in mean_cols})

# 分组聚合
result = df_p.groupby(group_keys, as_index=False).agg(agg_dict)

这两种方法都能高效处理多列场景,只需根据列名特征或业务规则调整筛选条件即可,无需手动枚举所有需聚合的列。

内容的提问来源于stack exchange,提问作者Rajib Lochan Sarkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:10:52