如何替换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
相关产品推荐
相关产品推荐

