我正在尝试使用fillna()方法。我为此创建了一个小型数据框和两个系列:
col1 col2 col3 col4
0 NaN NaN 3 4
1 NaN NaN 7 8
2 9.0 10.0 11 12
n1 = pd.Series([10, 20])
n2 = pd.Series([30, 40, 50, 60])
n2.index = list(df.columns.values)
当我尝试命令时:
df.fillna(n1, axis=0, inplace = True)
没有任何事情发生,NaN仍然完好无损。我希望看到它们被替换为值10(col1)和20(col2)。 当我尝试
df.fillna(n2, axis =1)
我收到错误消息:
NotImplementedError: Currently only can fill with dict/Series column by column
你能解释一下这种行为吗?您的建议将不胜感激。
答案 0 :(得分:0)
fillna
(与pandas中的许多其他方法一样)默认情况下不会就位。您需要传递inplace=True
或重新分配其返回值。
df.fillna(n1, axis=0, inplace=True)
或
df = df.fillna(n1, axis=0)
在这种情况下,阅读文档很有帮助:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html
inplace :布尔值,默认为False。 如果为True,请填写。注意:这将修改此对象上的任何其他视图(例如,DataFrame中列的无副本切片)
。
。
返回:已填充:DataFrame