如何基于对应列表为DataFrame创建布尔校验新列
实现方案
完全可以基于给定列表生成目标布尔校验列,直接使用pandas内置的isin方法完成匹配判断,组合两个校验结果即可,不需要写自定义循环逐行判断。
核心操作逻辑
- 调用
Series.isin()方法逐行判断Column1的值是否存在于list1中,生成第一组布尔校验序列 - 同法判断Column2的值是否存在于list2中,生成第二组布尔校验序列
- 对两个布尔序列做逐位逻辑与运算,只有两个校验同时为True的行,最终结果才为True,将计算结果赋值给新的
Check列即可
可直接运行的示例代码
import pandas as pd # 定义校验列表 list1 = ['Jack', 'Sam', 'Paul'] list2 = ['David', 'Detlef', 'Sam'] # 构造示例DataFrame df = pd.DataFrame({ "Column1": ["Selena", "Jack", "Sam"], "Column2": ["David", "Sam", "Detlef"] }) # 生成校验列 df["Check"] = df["Column1"].isin(list1) & df["Column2"].isin(list2)
运行输出结果
Column1 Column2 Check 0 Selena David False 1 Jack Sam True 2 Sam Detlef True
和期望的输出完全匹配。
优化提示:如果校验列表数据量很大,可以预先将列表转换为集合结构(即
set(list1)、set(list2))再传入isin方法,能显著提升大场景下的匹配速度;做逐位逻辑运算时,两个独立的校验表达式建议用括号包裹,避免因运算符优先级出现代码报错。
内容的提问来源于stack exchange,提问作者s_khan92
相关产品推荐
相关产品推荐

