fillna()方法在Pandas中的行为 - 不服从inplace参数 - 在轴1上返回错误

时间:2017-01-06 15:53:59

标签: python nan

我正在尝试使用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

你能解释一下这种行为吗?您的建议将不胜感激。

1 个答案:

答案 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