我已经查找了这个问题,大多数问题都是针对更复杂的替换。但是,在我的情况下,我有一个非常简单的 Dataframe 作为测试假人。
目标是用nan替换 Dataframe 中任何地方的字符串,然而这似乎不起作用(即:不替换;没有任何错误)。我试过用另一个字符串替换,但也不起作用。
d = {'color' : pd.Series(['white', 'blue', 'orange']),
'second_color': pd.Series(['white', 'black', 'blue']),
'value' : pd.Series([1., 2., 3.])}
df = pd.DataFrame(d)
df.replace('white', np.nan)
输出仍然是:
color second_color value
0 white white 1
1 blue black 2
2 orange blue 3
这个问题通常使用inplace=True
来解决,但也有一些警告。
9条答案
按热度按时间wz8daaqr1#
考虑到这是搜索“Pandas替换不起作用”时的最佳谷歌结果,我还想提一下:
replace执行完全替换搜索,除非你打开regex开关。使用regex=True,它也应该执行部分替换。
我花了30分钟才找到答案,所以希望我为下一个人节省了30分钟。
enyaitl32#
你需要重新分配
或传递参数
inplace=True
:大多数panda操作都会返回一个拷贝,并且大多数都具有参数
inplace
,该参数通常默认为False
ndh0cuux3#
无论是
inplace=True
还是regex=True
在我的情况下都不起作用,所以我找到了一个使用Series.str.replace的解决方案,如果你需要替换一个子字符串,它会很有用。或者甚至用切片。
bnl4lu3b4#
在直接使用replace函数之前,您可能需要检查列的数据类型。这可能是您对Object数据类型使用replace函数的情况,在这种情况下,您需要在将其转换为字符串之后应用replace函数。
8wtpewkr5#
当你使用
df.replace()
时,它会创建一个新的临时对象,但不会修改你的临时对象,你可以使用下面两行中的一行来修改df:92vpleto6#
对我有效的是使用这个dict符号。
{old值:新值}
检查这文档为更多信息. https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.DataFrame.replace.html
dphi5xsq7#
oxosxuxt8#
Python 3.10,panda 1.4.2,inplace=True对于下面的例子(列dtype int32)不起作用,但是重新分配它起作用了。
...在另一个涉及文本列中的nans的情况下,需要在预先步骤中键入列(而不仅仅是如上所述的.str):
2ekbmq329#
另一个原因,在那里我面临。替换功能不工作,我找到了原因并修复。
如果列中的字符串为“word1 word2”,从Excel中读取时,“word1”和“word2”之间的空格为“nbsp”,表示非空格。如果替换为正常空格,则一切正常。我的列名为“Name”