我有一个看起来像这样的数据框-
>>> 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
我必须用“d”列中的平均值替换 NaN,其中“a”列的值 > 2。所以,我写-
>>> 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)
但这似乎不起作用,它返回相同的数据帧,而不影响“d”列最后一行中的 NaN 值。
请告诉我我在这里做错了什么。我正在使用 pandas 版本 0.21
你需要分配给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 # <---
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)