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

如何使用Python通过通配符替换DataFrame特定列匹配值

需求说明

我需要替换DataFrame特定列中以指定字符串开头、结尾或包含指定字符串的值。比如在下面的DataFrame里,若‘Sr no#’列的内容包含‘updated’(不区分大小写,但单独的‘Updated’除外),就把这些值替换为空值:

示例DataFrame

Sr no#
123
abcd
NOTUPDATED
notupdated
Notupdated
Updated
joan aulia UPDATED
nameUPDATED
not

预期输出

Sr no#
123
abcd
Updated
not

解决方案

用Pandas结合正则表达式就能实现这个需求,步骤如下:

  1. 导入Pandas并创建示例DataFrame
import pandas as pd

data = {
    'Sr no#': ['123', 'abcd', 'NOTUPDATED', 'notupdated', 'Notupdated', 'Updated', 'joan aulia UPDATED', 'nameUPDATED', 'not']
}
df = pd.DataFrame(data)
  1. 匹配条件并替换
    我们需要匹配**包含'updated'(不区分大小写)但不等于单独的'Updated'**的行,这里用正则表达式^(?!Updated$).*(?i)updated.*$实现:
  • (?!Updated$):排除正好是'Updated'的行
  • (?i):开启不区分大小写模式
  • updated:匹配目标字符串
  • .*:匹配前后任意长度的字符

执行替换的代码有两种方式,选一种即可:

# 方法1:使用replace正则替换
df['Sr no#'] = df['Sr no#'].replace(to_replace=r'^(?!Updated$).*(?i)updated.*$', value='', regex=True)

# 方法2:用loc定位符合条件的行再替换
# df.loc[df['Sr no#'].str.contains(r'(?i)updated', regex=True) & (df['Sr no#'] != 'Updated'), 'Sr no#'] = ''

运行后就能得到预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:15:43