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

如何用Pandas合并含列表的列并去除重复值?

合并含列表的列并去重的实现方法

用pandas可以轻松实现这个需求,具体步骤如下:

1. 构造测试数据

先把你的源数据转换成DataFrame格式:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'col_0': ['aa', 'bb', 'cc'],
    'col_a': [[1], ['a', 'b'], np.nan],
    'col_b': [np.nan, ['b', 'c'], np.nan],
    'col_c': [[2,3], ['c'], np.nan]
})

2. 写合并去重的处理函数

定义一个函数,处理每行的col_a到col_c,把非空列表合并后去重:

def merge_and_deduplicate(row):
    # 收集所有非NaN的列表元素
    all_elements = []
    for col in ['col_a', 'col_b', 'col_c']:
        val = row[col]
        if not pd.isna(val):
            all_elements.extend(val)
    # 无有效数据返回NaN,否则去重后转列表
    return np.nan if not all_elements else list(dict.fromkeys(all_elements))

注:用dict.fromkeys可以保留元素的原始出现顺序;如果不需要顺序,换成list(set(all_elements))即可

3. 生成合并列

用apply把函数作用到每一行,生成新列:

df['merged_a_to_c'] = df.apply(merge_and_deduplicate, axis=1)

最终结果

运行后得到的DataFrame和你期望的完全一致:

col_0    col_a    col_b  col_c merged_a_to_c
0    aa      [1]      NaN  [2, 3]      [1, 2, 3]
1    bb  [a, b]  [b, c]    [c]      [a, b, c]
2    cc      NaN      NaN    NaN           NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:27:24