【发布时间】:2020-08-25 04:53:24
【问题描述】:
我想用相邻元素的平均值填充df 的nan。
考虑一个数据框:
df = pd.DataFrame({'val': [1,np.nan, 4, 5, np.nan, 10, 1,2,5, np.nan, np.nan, 9]})
val
0 1.0
1 NaN
2 4.0
3 5.0
4 NaN
5 10.0
6 1.0
7 2.0
8 5.0
9 NaN
10 NaN
11 9.0
我想要的输出是:
val
0 1.0
1 2.5
2 4.0
3 5.0
4 7.5
5 10.0
6 1.0
7 2.0
8 5.0
9 7.0 <<< deadend
10 7.0 <<< deadend
11 9.0
我已经研究过其他解决方案,例如Fill cell containing NaN with average of value before and after,但如果两个或多个连续的np.nans,这将不起作用。
非常感谢任何帮助!
【问题讨论】:
-
您真的希望两个或多个连续的
NaN填充相同的值吗?你真的不想要定义值之间的线性插值吗? -
@pipe 我确实想到了它,但似乎比填充
average过于复杂且计算量更大,这没有必要,因为我的实际数据集可以超过数千万行。跨度> -
df.val.interpolate(limit=1).fillna(method="ffill")