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

Python中判断DataFrame两列字符串列表是否相交并生成标记列

问题解决:判断列表列间是否存在元素匹配并生成标记列

问题分析

你的代码逻辑有误:[x in y for x,y in zip(df['CAR1'], df['CAR2'])] 是检查整个CAR1列表是否是CAR2列表的一个元素,而非两个列表是否存在共同元素,这导致无法得到预期结果。

正确实现方法

方法1:使用any()逐个检查元素

通过apply遍历每行,用any()判断CAR1中是否有元素存在于CAR2中:

import pandas as pd

# 构造示例DataFrame
data = {
    'CAR1': [['ford','hyundai'], ['ford','hyundai'], ['ford','hyundai']],
    'CAR2': [['ford','hyundai'], ['hyundai','nissan'], ['bmw', 'audi']]
}
df = pd.DataFrame(data)

# 生成Flag列
df['Flag'] = df.apply(lambda row: 1 if any(car in row['CAR2'] for car in row['CAR1']) else 0, axis=1)

方法2:使用集合交集(更高效)

将列表转为集合,利用集合交集快速判断是否存在共同元素:

df['Flag'] = df.apply(lambda row: 1 if set(row['CAR1']) & set(row['CAR2']) else 0, axis=1)

预期输出

执行上述代码后,DataFrame将变为:

CAR1                  CAR2  Flag
0  [ford, hyundai]  [ford, hyundai]      1
1  [ford, hyundai]  [hyundai, nissan]    1
2  [ford, hyundai]  [bmw, audi]          0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:05:20