python - 为什么 pandas 的 replace 方法不适用于 None 作为值?
问题描述
假设我们有一个 DataFrame:
import pandas as pd
df = pd.DataFrame({"a": [1,"NAN",3], "b": ["NAN",5,"NAN"], "c": ["NAN",8,9]})
a b c
0 1 NAN NAN
1 NAN 5 8
2 3 NAN 9
当我尝试执行常规时replace
,我得到不正确的结果:
df = df.replace('NAN', None)
a b c
0 1 NAN NAN
1 1 5 8
2 3 5 9
但是,当我将值作为列表时,它按预期工作:
df = df.replace(['NAN'], [None])
a b c
0 1.0 NaN NaN
1 NaN 5.0 8.0
2 3.0 NaN 9.0
你能解释一下为什么这两种情况下的行为不同吗?
PS:熊猫版本是1.0.3。
解决方案
正如这里回答的那样:
df.replace("NAN", None)
相当于df.replace("NAN", None, method='pad')
如果您查看源代码。
两者兼得df.replace({"NAN": None})
,df.replace("NAN", np.nan)
给你你想要的