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

Pandas使用str.contains匹配后批量替换列值的实现方案

实现方案

核心采用pandas.Series.str.extract()矢量化正则提取方法,全程无循环,适配十万/百万级大规模数据处理,性能远高于逐行匹配方案。

完整可运行代码

import pandas as pd
import re

# 加载测试数据
poke = pd.DataFrame({
    'index': {1: 2.0, 2: 3.0, 3: 4.0, 5: 8.0, 6: 12.0},
    'data_values': {1: 'charizard ex', 2: 'poliwhirl', 3: 'blastoise', 5: "blaine's arcanine", 6: 'ariados'},
    'price2': {1: 980.88, 2: 20.0, 3: 998.98, 5: 45.0, 6: 6.3}
})

# 定义匹配关键词列表
keywords = ["charizard", "poliwhirl", "blastoise", "arcanine", "ariados"]
# 构造正则捕获组,自动转义关键词中的特殊正则字符避免匹配错误
pattern = f'({"|".join(re.escape(k) for k in keywords)})'
# 提取匹配到的关键词,覆盖原列(如果需要保留原列可赋值给新列)
poke['data_values'] = poke['data_values'].str.extract(pattern, expand=False)

print(poke)

输出结果

index data_values  price2
1    2.0   charizard  980.88
2    3.0   poliwhirl   20.00
3    4.0   blastoise  998.98
5    8.0    arcanine   45.00
6   12.0     ariados    6.30

注意事项

  • 若存在未匹配到任何关键词的行,提取结果会返回NaN,如果需要保留原值可提前备份原列,补充代码:poke['data_values'] = poke['data_values'].fillna(poke['备份的原data_values列名'])
  • 该方案为纯矢量化操作,100万行数据处理耗时仅需数百毫秒,无需额外优化即可满足大规模数据处理需求

内容的提问来源于stack exchange,提问作者me.limes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:05