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

基于多列索引聚合Pandas DataFrame,合并指定列唯一值

Pandas DataFrame分组合并处理方案

需求说明

  • 以['category_1', 'category_2', 'level_1']作为分组依据,将DataFrame合并为该组合唯一的结构
  • 对['color', 'Name', 'Name_2']列,将每组内的不同取值用空格拼接合并
  • ['m','k']列保留每组内的原始值(每组内该列值一致)

处理前后示例

处理前DataFrame

color   Name  Name_2 category_1 category_2  level_1    m    k
0    black    Tom    Karl          a          x        2  asd   hf
1    green    Tom    Karl          a          x        2  asd   hf
2      red    red  johans          b          x        2   xg  cvb
3      red    tan  johans          b          x        2   xg  cvb
4    white  krish    bill          a          x        3   et  cvh
5    white  krish    jack          a          x        3   et  cvh
6   orange  krish    bill          a          x        3   et  cvh
7   orange  krish    jack          a          x        3   et  cvh
8     jack   jack   frank          b          x        3  fgd  gfh
9     jack    bac   frank          b          x        3  fgd  gfh
10    blue    bob     teo          b          y        3  dfg  cvh
11   green    bob     teo          b          y        3  dfg  cvh

处理后DataFrame

color      Name     Name_2 category_1 category_2  level_1    m    k
0   black green       Tom       Karl          a          x        2  asd   hf
1           red   red tan     johans          b          x        2   xg  cvb
2  white orange     krish  bill jack          a          x        3   et  cvh
3          jack  jack bac      frank          b          x        3  fgd  gfh
4   blue  green       bob        teo          b          y        3  dfg  cvh

实现代码

import pandas as pd

# 构造示例数据
data = {
    'color': ['black', 'green', 'red', 'red', 'white', 'white', 'orange', 'orange', 'jack', 'jack', 'blue', 'green'],
    'Name': ['Tom', 'Tom', 'red', 'tan', 'krish', 'krish', 'krish', 'krish', 'jack', 'bac', 'bob', 'bob'],
    'Name_2': ['Karl', 'Karl', 'johans', 'johans', 'bill', 'jack', 'bill', 'jack', 'frank', 'frank', 'teo', 'teo'],
    'category_1': ['a', 'a', 'b', 'b', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],
    'category_2': ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'y', 'y'],
    'level_1': [2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3],
    'm': ['asd', 'asd', 'xg', 'xg', 'et', 'et', 'et', 'et', 'fgd', 'fgd', 'dfg', 'dfg'],
    'k': ['hf', 'hf', 'cvb', 'cvb', 'cvh', 'cvh', 'cvh', 'cvh', 'gfh', 'gfh', 'cvh', 'cvh']
}
df = pd.DataFrame(data)

# 定义聚合规则:去重后拼接/保留唯一值
agg_rules = {
    'color': lambda col: ' '.join(pd.unique(col)),
    'Name': lambda col: ' '.join(pd.unique(col)),
    'Name_2': lambda col: ' '.join(pd.unique(col)),
    'm': 'first',  # 每组内值一致,取第一个即可
    'k': 'first'
}

# 分组聚合并重置索引
result_df = df.groupby(['category_1', 'category_2', 'level_1'], as_index=False).agg(agg_rules)

# 调整列顺序与示例匹配
result_df = result_df[['color', 'Name', 'Name_2', 'category_1', 'category_2', 'level_1', 'm', 'k']]

print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:43:21