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

如何基于数组中的部分匹配删除DataFrame中的行

实现部分匹配删除DataFrame行的方案

单列匹配(以姓氏列为例)

你可以利用str.contains()结合正则表达式实现部分匹配,把姓名数组转成用|分隔的匹配模式,就能检查单元格是否包含数组中的任意关键词,再取反筛选保留不需要删除的行。

示例代码:

import pandas as pd

# 模拟数据
df = pd.DataFrame({
    'First Name': ['John', 'Alice', 'Bob'],
    'Last Name': ['Smith-West', 'Johnson', 'Smith']
})
names = ['smith', 'john']

# 构建正则匹配模式,case=False忽略大小写(按需调整)
match_pattern = '|'.join(names)
# 筛选出姓氏不包含数组元素的行
df = df[~df['Last Name'].str.contains(match_pattern, case=False)]

多列同时匹配(名字或姓氏任一匹配即删除)

如果需要检查名字或姓氏任意一列包含数组元素就删除,可以用apply配合any()实现:

# 检查名字/姓氏列是否存在匹配项
match_mask = df[['First Name', 'Last Name']].apply(lambda col: col.str.contains(match_pattern, case=False)).any(axis=1)
# 取反保留未匹配的行
df = df[~match_mask]

注意事项

  • 如果姓名数组里包含正则特殊字符(比如.、*、+),需要用re.escape()转义,避免语法冲突:
    import re
    match_pattern = '|'.join(re.escape(name) for name in names)
    
  • 去掉case=False参数可开启严格大小写匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:02:36