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

Pandas:如何基于多列合并行并合并列表列

合并Pandas DataFrame中列值相同的行并合并列表列

问题场景

现有如下Pandas DataFrame:

import pandas as pd 

test = [
    {1: 434, 2: 343, 3: [592]},
    {1: 434, 2: 343, 3: [192]},
    {1: 534, 2: 743, 3: [392]},
]

df = pd.DataFrame(test)

输出结果:

1    2       3
0  434  343  [592]
1  434  343  [192]
2  534  743  [392]

需求:合并列1和列2值相同的行,并将列3中的列表合并,期望结果:

1    2               3
0  434  343  [592, 192]
1  534  743        [392]

用户已尝试使用df.groupby([1, 2]).aggregate(aggregation_functions),但不确定聚合函数的选择。

解决方案

可以通过两种方式实现需求:

方法1:自定义聚合函数

定义一个扁平化拼接列表的函数,配合groupby完成聚合:

def merge_lists(list_collection):
    return [item for sublist in list_collection for item in sublist]

# as_index=False用于保留分组列(1、2)为普通数据列,而非索引
result_df = df.groupby([1, 2], as_index=False).agg({3: merge_lists})

方法2:利用列表的sum特性

列表的sum()方法会自动拼接所有子列表,适合当前列3均为列表的场景:

result_df = df.groupby([1, 2], as_index=False).agg({3: sum})

两种方法执行后,都能得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:05:22