我的数据框看起来像这样 -
>>> 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
答案 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 # <---