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

对比逗号分隔字符串与列表两列,追加保序无重复缺失项的实现

Pandas 合并多值列并保留顺序去重方案

实现代码

import pandas as pd

# 构造示例数据,可替换为你的实际数据
df = pd.DataFrame({
    'Column A': ['BB,CC', 'AA,BB'],
    'Column B': [['AA', 'BB'], ['AA', 'BB']]
})

def merge_unique(row):
    # 拆分A列逗号分隔字符串为列表
    a_items = row['Column A'].split(',')
    # 拼接A、B两列的元素
    all_items = a_items + row['Column B']
    # 按插入顺序去重,Python 3.7+ 原生支持
    unique_items = list(dict.fromkeys(all_items))
    # 转回逗号分隔字符串
    return ','.join(unique_items)

# 按行应用处理逻辑,生成结果列
df['Column C'] = df.apply(merge_unique, axis=1)

运行后df['Column C']的输出完全符合预期:

0    BB,CC,AA
1       AA,BB
Name: Column C, dtype: object

如果偏好更简洁的写法,也可以直接用lambda实现:

df['Column C'] = df.apply(
    lambda row: ','.join(dict.fromkeys(row['Column A'].split(',') + row['Column B'])),
    axis=1
)

逻辑说明

  • 使用apply时指定axis=1,每次传入的参数为当前行的完整数据,可同时读取同一行的Column A和Column B的值,解决了原代码读取整列A的问题
  • dict.fromkeys()会将传入列表的元素作为字典的键,自动去重,Python 3.7及以上版本字典默认保留元素插入顺序,完全满足保留原有顺序的需求,无需使用会打乱顺序的set

旧版本兼容方案

如果使用Python 3.7以下的版本,替换去重逻辑为有序字典即可:

from collections import OrderedDict
unique_items = list(OrderedDict.fromkeys(all_items))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:18:05