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

如何在Pandas DataFrame中找出两列单词列表的非共同元素

解决Pandas两列列表找非共同单词的问题

没问题,我来帮你搞定这个需求!根据你的例子,你需要找出column2中存在但column1里没有的单词,而且要保留这些单词在column2里的原有顺序,对吧?下面是具体的实现步骤:

步骤1:准备示例数据

首先我们先创建你给出的测试DataFrame:

import pandas as pd

# 构造示例数据
data = {
    'column1': [['a','b'], ['c','a']],
    'column2': [['c','a','b'], ['a','b','d','c']]
}
df = pd.DataFrame(data)

步骤2:定义提取独有的单词的函数

我们需要一个函数,接收两个列表,返回第二个列表中不在第一个列表里的元素,同时保持原有顺序。这里用集合来优化查找效率(集合的成员检测比列表快很多):

def get_unique_from_col2(col1_list, col2_list):
    # 把column1的列表转成集合,方便快速查找
    col1_words = set(col1_list)
    # 遍历column2的每个单词,只保留不在column1里的
    return [word for word in col2_list if word not in col1_words]

步骤3:应用函数生成新列

用Pandas的apply方法,把函数应用到每一行的column1和column2上,生成column3:

df['column3'] = df.apply(lambda row: get_unique_from_col2(row['column1'], row['column2']), axis=1)

最终结果

运行完上面的代码后,你的DataFrame会变成这样:

column1          column2    column3
0  [a, b]     [c, a, b]        [c]
1  [c, a]  [a, b, d, c]     [b, d]

正好符合你期望的结果!如果之后你需要的是两列各自独有的单词的合集(比如假设column1有column2没有的元素也要包含),只需要稍微修改函数就行,比如:

def get_symmetric_unique(col1_list, col2_list):
    col1_set = set(col1_list)
    col2_set = set(col2_list)
    # 找出两边独有的元素,再按原列表的顺序整理
    unique_col1 = [word for word in col1_list if word not in col2_set]
    unique_col2 = [word for word in col2_list if word not in col1_set]
    return unique_col1 + unique_col2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:57:31