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

如何替换Pandas DataFrame中所有匹配项?replace()方法无效求解

解决Pandas DataFrame replace()方法不生效的问题

嘿,我完全懂你遇到的这个坑!你用replace()方法后没看到数据变化,核心原因是Pandas的replace()默认不会直接修改原DataFrame——它会生成一个替换后的新DataFrame对象,如果你没把这个新对象赋值回去,原df自然还是原来的样子。

给你两种简单的解决办法:

方法一:将替换结果赋值给变量

直接把replace()返回的新DataFrame赋值给原变量(或者新变量),这样后续调用print(df)就能看到更新后的数据了:

import pandas as pd

# 先定义你的DataFrame
data = {
    'Student1': ['OK', 'Awful', 'Acceptable'],
    'Student2': ['Perfect', 'Awful', 'OK'],
    'Student3': ['Acceptable', 'Perfect', 'Poor']
}
df = pd.DataFrame(data)

# 赋值替换后的结果到原df
df = df.replace(['Awful', 'Poor', 'OK', 'Acceptable', 'Perfect'], [0, 1, 2, 3, 4])

print(df)

方法二:使用inplace=True参数直接修改原DataFrame

如果你不想额外赋值,可以在replace()里加上inplace=True参数,它会直接在原DataFrame上完成替换操作:

import pandas as pd

data = {
    'Student1': ['OK', 'Awful', 'Acceptable'],
    'Student2': ['Perfect', 'Awful', 'OK'],
    'Student3': ['Acceptable', 'Perfect', 'Poor']
}
df = pd.DataFrame(data)

# 直接修改原df,无需赋值
df.replace(['Awful', 'Poor', 'OK', 'Acceptable', 'Perfect'], [0, 1, 2, 3, 4], inplace=True)

print(df)

两种方法运行后,你都会得到预期的输出:

Student1  Student2  Student3
0         2         4         3
1         0         0         4
2         3         2         1

另外小提醒:使用inplace=True的时候要谨慎,因为它会直接覆盖原数据,万一后续还需要原始数据的话就麻烦啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:04:08