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

Python 3.6.8中Pandas的replace方法无法替换值问题求助

Pandas替换单元格子字符串失效的问题解决

嘿,我来帮你排查这个问题!你发现replace方法没把单元格里的:)替换成目标字符串,核心原因是Pandas的replace方法默认是全匹配模式——它只会替换那些和字典键完全一致的整个单元格内容,而不是单元格里的子字符串。

你的目标是替换单元格内的子串":)",但原单元格内容是一整句话,自然不会触发全匹配替换,所以看起来没生效。

解决方案:开启正则替换模式

有两种简单的修改方式,都能实现子串替换:

方法1:针对字符串列使用str.replace

直接对tweet列调用字符串方法str.replace,并传入字典和regex=True参数(开启正则匹配,这样就能识别子串):

import pandas as pd
INPUT_FILE = "input.csv"
df = pd.read_csv(INPUT_FILE, error_bad_lines=False, engine='python')
print(df.columns)
print ("Before: ", df['tweet'].loc[432])
dic = {":-": "happy-smiley", ":)": "happy-smiley", ":-(": "sad-smiley", ":(": "sad-smiley"}
# 修改这里:用str.replace并开启regex
df['tweet'] = df['tweet'].replace(dic, regex=True)
print ("After: ", df['tweet'].loc[432])

方法2:给df.replace添加regex=True参数

如果你想保留原来的df.replace写法,只需要加上regex=True参数,告诉Pandas要做子串匹配:

df.replace({'tweet': dic}, regex=True, inplace=True)

效果验证

修改后,你会看到输出的After内容里,:)已经被替换成happy-smiley了:

After: Are you ready for climate change, if so let your lawmakers know, how tell them sign petitions, drop a hint happy-smiley

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:57:40