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

Pandas按COL1、COL2合并行并保留其他列的解决方案

解决Pandas分组拼接后保留其他列的问题

方法一:分组时同时聚合所有列

直接在groupby的agg方法中,对需要拼接的COL3用','.join,对其他列因分组后值一致,取第一个值(或任意一个值)即可:

import pandas as pd

# 示例数据
data = {
    'COL1': ['A', 'H', 'A', 'J', 'A', 'A'],
    'COL2': ['B', 'A', 'B', 'A', 'A', 'A'],
    'COL3': ['C', 'D', 'C', 'D', 'C', 'D'],
    '其他列': ['...', '...', '...', '...', '...', '...']
}
df = pd.DataFrame(data)

# 分组聚合处理
df_merged = df.groupby(['COL1', 'COL2']).agg(
    COL3=('COL3', ','.join),
    **{col: (col, 'first') for col in df.columns if col not in ['COL1', 'COL2', 'COL3']}
).reset_index()

print(df_merged)

输出结果完全匹配需求,其他列会被完整保留。

方法二:拆分处理后合并

先单独处理COL3的拼接,再提取原数据中其他列的唯一值(因分组后值一致),最后通过merge合并:

# 处理COL3拼接
col3_combined = df.groupby(['COL1', 'COL2'])['COL3'].apply(','.join).reset_index()

# 提取其他列的唯一记录
other_cols_unique = df.drop('COL3', axis=1).drop_duplicates(subset=['COL1', 'COL2'])

# 合并数据
df_merged = other_cols_unique.merge(col3_combined, on=['COL1', 'COL2'])

这种方式逻辑更直观,适合需要分步验证的场景。


内容的提问来源于stack exchange,提问作者Learning from masters

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:35:50