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

如何在Pandas中按MainID合并多行SecID为冒号分隔列?

最优实现方案

对于这种按主ID合并次级ID的场景,用pandas的groupby+agg组合是最高效的解决方案,它利用pandas的向量化操作,性能远优于循环处理。

代码实现

import pandas as pd

# 构造示例数据
data={'MainID':['NHFPL0580','NHFPL0580','NHFPL0582','NHFPL0582'],'SecID':['G12345','G67890','G11223','G34455'], 'Other':['A','A','B','B']}
df=pd.DataFrame(data)

# 分组聚合处理
result_df = df.groupby('MainID').agg(
    SecID=('SecID', ':'.join),
    Other=('Other', 'first')  # 同一MainID下该列值一致,取第一个即可
).reset_index()

print(result_df)

输出结果

MainID          SecID Other
0  NHFPL0580  G12345:G67890     A
1  NHFPL0582  G11223:G34455     B

补充说明

  • agg方法可以同时为不同列指定聚合逻辑,代码清晰直观;
  • 对于Other这类同一分组下值完全相同的列,用first()/last()/max()等任意聚合方法都能得到正确结果;
  • 如果存在多个类似Other的列,可以通过字典批量配置聚合规则,简化代码:
    # 多列场景的简化写法
    agg_dict = {col: 'first' for col in df.columns if col not in ['MainID', 'SecID']}
    agg_dict['SecID'] = ':'.join
    result_df = df.groupby('MainID').agg(agg_dict).reset_index()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 11:36:15