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

如何用Pandas按单列聚合多列?现有单列聚合代码需扩展

解决方案

要实现按Group列对多列进行聚合(将每组元素用逗号拼接),无需逐列单独处理,用pandas的agg方法可批量完成,适配你12列的场景,比原代码更高效简洁。

方法1:定义通用聚合函数批量处理

先写一个通用的拼接函数,再指定所有需要聚合的列,一次性完成分组聚合:

import pandas as pd

# 示例数据集
data = {
    'Group': ['A', 'A', 'B', 'B', 'A', 'B'],
    'Value': [1, 2, 3, 4, 5, 6],
    'Qty': [100, 202, 403, 754, 855, 1256]
}
df = pd.DataFrame(data)

# 定义聚合逻辑:将列内元素转为字符串后用逗号拼接
def concat_group_values(x):
    return ', '.join(map(str, x))

# 指定需要聚合的列(实际场景可直接扩展为12列的列名列表)
target_cols = ['Value', 'Qty']
result = df.groupby('Group')[target_cols].agg(concat_group_values).reset_index()

print(result)

运行输出:

Group    Value                Qty
0     A  1, 2, 5  100, 202, 855
1     B  3, 4, 6  403, 754, 1256

方法2:用lambda简化代码(无需单独定义函数)

如果不想额外写函数,直接在agg中嵌入lambda表达式即可:

target_cols = ['Value', 'Qty']
result = df.groupby('Group')[target_cols].agg(lambda x: ', '.join(map(str, x))).reset_index()

原代码的局限说明

原代码中groupby('Group')['Value']仅选中单列,后续apply逻辑只能处理单列数据。而agg方法支持同时对多列应用相同聚合规则,自动保留原列名,只需把所有要聚合的列名加入target_cols列表,就能轻松适配12列的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:16:10