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

如何用Pandas替换DataFrame每行中指定列表内的词汇?

如何替换DataFrame列中指定列表内的词汇

给定数据

词汇列表:

word = ['dog', 'cat', 'fish']

DataFrame:

import pandas as pd
dfa = pd.DataFrame({'a': ['big dog', 'good food', 'dog and cat', 'little fish', 'intense light', 'nice cat']})

问题场景

尝试用以下代码替换列中出现的指定词汇,但代码未报错却无法生效:

for row in dfa['a']:
   for w in word:
       if w in row:
           dfa['a'] = dfa['a'].replace(w, "animal")

期望结果:

a
0      big animal
1      good food
2  animal and animal
3   little animal
4  intense light
5      nice animal

问题原因

原代码的核心问题:

  • Pandas的Series.replace()默认是完全匹配字符串,而非子串替换。只有当单元格内容和w完全一致时才会替换,而你的场景是单元格包含目标词汇,所以不生效。
  • 循环遍历行的方式逻辑冗余,且没有利用Pandas的矢量化操作优势,效率低下。

正确实现方法

使用正则表达式进行子串替换,同时确保匹配完整单词(避免误替换类似doggy这类包含目标词汇的字符串):

# 构建正则模式:匹配列表中任意一个完整单词
pattern = r'\b(' + '|'.join(word) + r')\b'
# 执行替换
dfa['a'] = dfa['a'].str.replace(pattern, 'animal', regex=True)

如果不需要严格匹配完整单词(比如允许替换doggy里的dog),可以去掉正则中的\b(单词边界):

pattern = '(' + '|'.join(word) + ')'
dfa['a'] = dfa['a'].str.replace(pattern, 'animal', regex=True)

执行后即可得到你期望的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:16:13