我有一个具有混合数据类型的数据框。我想填充 NaN 值,但保持 None 值不变。
我尝试使用 pandas 中的 fillna() 方法,但该函数同时填充 NaN 和 None 值。 我想用特定的字符串值(如“x”)填充 NaN,而不是数字。并保持 None 值相同。
For example:
A B C
0 12 0 None
1 None NaN None
2 NaN 9.8 1
3 0 NaN 1
Expected:
A B C
0 12 0 None
1 None x None
2 x 9.8 1
3 0 x 1
df = pd.DataFrame([[None, 3], ["", np.nan]]) #created a dummy dataframe with these values
然后使用下面的代码段将 None 更改为“None”(字符串),然后将 NA 替换为您想要替换的值。
最终将其转换回 None (不是字符串)
df.replace({None:'None'}).fillna("x").replace({'None':None})
结果看起来像这样
0 None 3.0
1 x
如果
df
是您的数据框:
df = df.replace({None:'None'}).fillna('x')
在第一步中,您将用字符串“None”替换
None
,然后在第二步中,您将用字符串“x”填充 NaN
。