在Pandas中的特定行和列中填充NaN

时间:2017-12-30 09:10:38

标签: python pandas

我的数据框看起来像这样 -

>>> df  
     a    d    s  
0  1.0  3.0  2.0  
1  2.0  NaN  4.0  
2  3.0  6.0  NaN  
3  NaN  NaN  3.0  
4  5.0  8.0  NaN  
5  6.0  NaN  NaN  

我必须在列中删除NaN和均值' d'列的值是' a' >所以,我写了 -

>>> df['d'][df['a']>2]  
2    6.0  
4    8.0  
5    NaN  

>>> df['d'][df['a']>2].fillna(df['d'][df['a']>2].mean(), inplace = True)  

但这似乎不起作用,它会返回相同的数据帧,而不会影响最后一行中的NaN值' d'列。

请告诉我这里做错了什么。我正在使用pandas版本0.21

1 个答案:

答案 0 :(得分:2)

您需要分配到loc。首先,计算平均值。

i = df.loc[df.a > 2, 'd'].mean()

现在,请致电fillna并将其分配回来。

df.loc[df.a > 2, 'd'] = df.loc[df.a > 2, 'd'].fillna(i)
df

     a    d    s
0  1.0  3.0  2.0
1  2.0  NaN  4.0
2  3.0  6.0  NaN
3  NaN  NaN  3.0
4  5.0  8.0  NaN
5  6.0  7.0  NaN    # <---