如何筛选pandas DataFrame中列值包含于指定字符串的行
pandas 反向包含筛选实现方案
你需要的是反向包含判断,和常用的「列值是否包含指定字符串」逻辑相反,核心逻辑为判断给定的目标字符串是否包含当前行的列值,以下是可直接复用的实现:
测试数据构造
和你给出的示例结构对齐:
import pandas as pd df = pd.DataFrame({ 'Part_Number': ['A1127', 'A1347'] }) target_str = "ZA1127B.48"
实现方法
方法1:列表推导(小数据量首选,写法简单性能优异)
filtered_df = df[[x in target_str for x in df['Part_Number']]]
方法2:apply 实现(逻辑最直观,易扩展自定义规则)
filtered_df = df[df['Part_Number'].apply(lambda x: x in target_str)]
方法3:向量化实现(十万行以上大数据量首选,性能最优)
import numpy as np # 包装in判断为向量化函数 check_contain = np.vectorize(lambda x: x in target_str) filtered_df = df[check_contain(df['Part_Number'])]
执行结果
三种方法得到的筛选结果一致,符合预期:
Part_Number 0 A1127
注意事项
- 若列值存在非字符串类型,需要先做类型转换:
df['Part_Number'] = df['Part_Number'].astype(str) - 若需要忽略大小写判断,可以统一转大小写后再比较:
lambda x: x.lower() in target_str.lower() - 若列中存在空值,建议先过滤空值再执行筛选,避免判断异常。
内容的提问来源于stack exchange,提问作者Artup
相关产品推荐
相关产品推荐

