如何删除DataFrame中position列含列表元素的行(支持子串匹配)
解决方法:删除DataFrame中包含指定子串的行
直接用pandas的str.contains结合正则表达式就能搞定,步骤如下:
1. 模拟示例数据(对应你的图示内容)
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'position': ['Sales Manager', 'Engineer', 'Senior Sales', 'Data Analyst'], 'salary': [8000, 9000, 8500, 7500] }) # 需要排除的子串列表 exclude_substrings = ['sales', 'engineer']
2. 核心过滤代码
# 把列表转成正则匹配模式,用|分隔所有子串 match_pattern = '|'.join(exclude_substrings) # 过滤出position列不包含任何指定子串的行 # case=False 忽略大小写,na=False 处理空值避免报错 filtered_df = df[~df['position'].str.contains(match_pattern, case=False, na=False)]
3. 结果说明
运行后filtered_df会只保留David对应的行,因为他的position字段不包含sales或engineer相关子串。
如果你的实际数据里有缺失值,na=False会把这些行保留下来;要是想把缺失值也删掉,改成na=True就行。
内容的提问来源于stack exchange,提问作者Shabbir Ansari
相关产品推荐
相关产品推荐

