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

Python 2.7实现:检测列元素是否在主列表中并生成标记列

Python 2.7 下 DataFrame 匹配标记解决方案

核心思路

把master_list列转成集合(大幅提升成员查找效率),逐行判断list_1/list_2的元素是否在这个集合中,对应标记1或0即可。

代码实现

处理空白字符串的情况(匹配你提供的示例数据格式)

import pandas as pd

# 构造示例DataFrame
data = {
    'list_1': ['a', 'b', '', '', ''],
    'list_2': ['c', 'd', 'e', '', ''],
    'master_list': ['a', 'b', 'c', 'd', 'e']
}
df = pd.DataFrame(data)

# 将master_list转换为集合,优化查找速度
master_set = set(df['master_list'].dropna())

# 生成l1列:空字符串直接标记0,存在则标记1
df['l1'] = df['list_1'].apply(lambda x: 1 if x.strip() in master_set else 0)

# 生成l2列:同l1逻辑
df['l2'] = df['list_2'].apply(lambda x: 1 if x.strip() in master_set else 0)

# 输出结果
print(df)

处理NaN空值的情况(如果数据中空值是NaN而非空白字符串)

如果list_1/list_2里的空值是NaN,调整判断逻辑即可:

# 生成l1列
df['l1'] = df['list_1'].apply(lambda x: 1 if pd.notna(x) and x in master_set else 0)

# 生成l2列
df['l2'] = df['list_2'].apply(lambda x: 1 if pd.notna(x) and x in master_set else 0)

结果验证

运行代码后,输出的DataFrame会和你提供的示例结果完全一致:

list_1 list_2 master_list l1 l2
0 a c a 1 0
1 b d b 1 0
2 e c 0 1
3 d 0 1
4 e 0 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:52:16