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

如何用pandas的str.replace方法批量替换DataFrame指定列的值?

Pandas批量替换DataFrame指定列值

原数据

column1  column2
aaaa     cup
bbbb     coffee
cccc     juice
dddd     tea

期望结果

column1  column2
aaaa     pink 
bbbb     brown 
cccc     orange
dddd     white

问题与尝试

多次单独调用str.replace可实现需求,但代码繁琐:

df['column2'] = df['column2'].str.replace('cup', 'pink')
df['column2'] = df['column2'].str.replace('coffee', 'brown')
df['column2'] = df['column2'].str.replace('juice', 'orange')
df['column2'] = df['column2'].str.replace('tea', 'white')

尝试用字典批量替换但失败:

change_word = {
    'cup':'pink'    ,'coffee':'brown',
    'juice':'orange','tea':'white'
}
df['column2'].str.replace(change_word, inplace=True)

解答

  1. str.replace不支持直接传入字典做批量替换:该方法第一个参数仅接受字符串或正则表达式,第二个参数接受字符串或替换函数,直接传字典不符合参数要求,因此无法生效。

  2. 可行解决方案:通过正则表达式结合lambda函数实现批量替换,既支持部分匹配,也可按需设置精确匹配:

import re

change_word = {
    'cup':'pink',
    'coffee':'brown',
    'juice':'orange',
    'tea':'white'
}

# 生成匹配所有待替换关键词的正则(自动转义特殊字符)
pattern = re.compile('|'.join(re.escape(key) for key in change_word.keys()))
# 用lambda函数根据匹配到的关键词返回对应替换值
df['column2'] = df['column2'].str.replace(pattern, lambda match: change_word[match.group()])
  • 如果需要精确匹配整个单词(比如避免把'cupcake'中的'cup'误替换),可以给正则加上单词边界\b:
pattern = re.compile(r'\b(' + '|'.join(re.escape(key) for key in change_word.keys()) + r')\b')

该方法既简化了代码,又保留了str.replace支持部分匹配的特性,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:25:19