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

如何按cat2列合并DataFrame多行,实现多类型列的差异化聚合

Pandas按指定列分组合并DataFrame解决方案

原始DataFrame

| cat0  | cat1 | cat2 | col_list  | Quantity |
| ----- | ---- | ---- | ----------| -------- |
| alpha | x    | a    | [a,b,c,d] | 4        |
| alpha | y    | a    | [e]       | 1        |
| beta  | z    | a    | [f,g]     | 2        |
| gamma | p    | b    | [h]       | 1        |
| gamma | q    | b    | [I,j,k,l] | 4        |
| phi   | r    | c    | [r,s]     | 2        |
| eita  | s    | c    | [m,n]     | 2        |

实现代码

import pandas as pd

# 构造原始数据
data = {
    'cat0': ['alpha', 'alpha', 'beta', 'gamma', 'gamma', 'phi', 'eita'],
    'cat1': ['x', 'y', 'z', 'p', 'q', 'r', 's'],
    'cat2': ['a', 'a', 'a', 'b', 'b', 'c', 'c'],
    'col_list': [['a','b','c','d'], ['e'], ['f','g'], ['h'], ['I','j','k','l'], ['r','s'], ['m','n']],
    'Quantity': [4, 1, 2, 1, 4, 2, 2]
}

df = pd.DataFrame(data)

# 定义分组聚合规则
agg_rules = {
    'cat0': lambda x: ','.join(x.unique()),
    'cat1': lambda x: ','.join(x.unique()),
    'col_list': lambda x: [item for sublist in x for item in sublist],
    'Quantity': 'sum'
}

# 按cat2分组并聚合
result_df = df.groupby('cat2', as_index=False).agg(agg_rules)

print(result_df)

运行结果

| cat0       | cat1  | cat2 | col_list        | Quantity |
| ---------- | ----- | ---- | ----------------| -------- |
| alpha,beta | x,y,z | a    | [a,b,c,d,e,f,g] | 7        |
| gamma      | p,q   | b    | [h,I,j,k,l]     | 5        |
| phi,eita   | r,s   | c    | [r,s,m,n]       | 4        |

规则说明

  • 字符串列cat0、cat1:先去重再用逗号拼接,避免同一分组内出现重复值
  • 列表列col_list:通过列表推导式将所有子列表的元素合并为单个大列表
  • 整数列Quantity:直接对分组内的数值求和

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 12:06:44