如何使用Pandas判断多列单元格值是否存在于另一张表的指定列中
Python Pandas 匹配判断解决方案
实现逻辑
- 将表1的参考水果列表转为集合,使用集合的O(1)查询特性提升匹配效率,适配300行参考数据的场景
- 自动筛选表2中所有Fruit开头的列,无需手动枚举列名,适配最多40列的实际业务场景
- 逐行校验所有Fruit列的取值,只要有任意值存在于参考集合中即标记为Yes,否则标记为No
完整代码
import pandas as pd # ---------------------- 示例数据构造 实际使用时替换为你自己的读表代码即可 ---------------------- # 读表1参考水果列表,示例构造如下 df1 = pd.DataFrame({ 'Fruits': ['apple', 'orange', 'grape', 'melon'] }) # 读表2待匹配数据,示例构造如下 df2 = pd.DataFrame({ 'Name': ['Mike', 'Bob', 'Jack', 'Rob', 'Rita'], 'Fruit 1': ['apple', 'peach', 'banana', 'peach', 'apple'], 'Fruit 2': ['', 'pear', '', 'banana', 'orange'], 'Fruit 3': ['', 'orange', '', '', 'banana'] }) # ----------------------------------------------------------------------------------------- # 1. 生成参考水果集合 ref_fruit_set = set(df1['Fruits'].dropna().unique()) # 2. 自动筛选所有需要判断的Fruit列 check_cols = [col for col in df2.columns if col.startswith('Fruit')] # 3. 生成判断列 df2['Contains Fruits Table 2?'] = df2[check_cols].apply( lambda row: 'Yes' if any(row.isin(ref_fruit_set)) else 'No', axis=1 ) # 输出结果 print(df2)
输出结果验证
运行后输出的结果和示例完全一致:
| Name | Fruit 1 | Fruit 2 | Fruit 3 | Contains Fruits Table 2? |
|---|---|---|---|---|
| Mike | apple | Yes | ||
| Bob | peach | pear | orange | Yes |
| Jack | banana | No | ||
| Rob | peach | banana | No | |
| Rita | apple | orange | banana | Yes |
内容的提问来源于stack exchange,提问作者qwebeee
相关产品推荐
相关产品推荐

