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

Pandas中其他两列及以上值重复时如何合并目标列取值

实现方案

针对多列取值重复时合并指定列的需求,直接使用pandas的分组聚合能力即可完成,具体操作如下:

  • 前置准备:导入pandas库,加载你的原始数据表
import pandas as pd

# 构造示例原始DataFrame,实际使用时替换为你的数据读取逻辑即可
df = pd.DataFrame({
    'col1': ['190L', '190L', '190L', '180L', '180L', '180L'],
    'Col2': ['L1', 'L1', 'L1', 'L2', 'L2', 'L2'],
    'Col3': ['m1:abc', 'm1:xyz', 'm1:abd', 'm2:ab2', 'm2:bcx', 'm2:nby']
})
  • 编写Col3列的自定义拼接逻辑
    同一col1+Col2分组下,Col3的前缀(冒号前内容)完全一致,只需要提取所有行冒号后的内容做逗号拼接,再和前缀组合即可。如果需要匹配你给出的示例中m2组用.做分隔符的特殊要求,在函数里加简单判断就行:
def concat_col3(col_series):
    # 提取分组内统一的前缀
    prefix = col_series.iloc[0].split(':')[0]
    # 收集所有值的后缀部分
    suffix_part = ','.join([item.split(':')[1] for item in col_series])
    # 匹配示例格式:m2前缀用.连接,其余用:连接,不需要特殊格式直接统一用:即可
    connect_sep = '.' if prefix == 'm2' else ':'
    return f'{prefix}{connect_sep}{suffix_part}'
  • 执行分组聚合得到结果
    按col1、Col2两列分组,对Col3列应用上面写好的拼接函数,设置不自动排序保持原数据顺序,重置索引后输出就是目标结果:
result_df = df.groupby(by=['col1', 'Col2'], as_index=False, sort=False)['Col3'].agg(concat_col3)

执行后打印result_df的输出完全匹配预期:

col1 Col2            Col3
0  190L   L1  m1:abc,xyz,abd
1  180L   L2  m2.ab2,bcx,nby

注:如果不需要特殊分隔符,把自定义函数里的connect_sep统一设为':'即可,适配绝大多数同类型分组合并场景。

内容的提问来源于stack exchange,提问作者parag

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:57:32