【发布时间】:2020-04-21 19:37:53
【问题描述】:
我们以这个数据框为例:
df = pd.DataFrame(dict(Col1=[np.nan,1,1,2,3,8,7], Col2=[1,1,np.nan,np.nan,3,np.nan,4], Col3=[1,1,np.nan,5,1,1,np.nan]))
Col1 Col2 Col3
0 NaN 1.0 1.0
1 1.0 1.0 1.0
2 1.0 NaN NaN
3 2.0 NaN 5.0
4 3.0 3.0 1.0
5 8.0 NaN 1.0
6 7.0 4.0 NaN
我想先删除第一行和最后一行,直到第一行和最后一行不再有 NaN。
中间预期输出:
Col1 Col2 Col3
1 1.0 1.0 1.0
2 1.0 NaN NaN
3 2.0 NaN 5.0
4 3.0 3.0 1.0
然后,我想用下面不是 NaN 的最接近的值的平均值替换剩余的 NaN,以及上面的那个。
最终预期输出:
Col1 Col2 Col3
0 1.0 1.0 1.0
1 1.0 2.0 3.0
2 2.0 2.0 5.0
3 3.0 3.0 1.0
我知道我可以通过
在我的数据框中获得 NaN 的位置df.isna()
但我无法解决我的问题。请问我该怎么办?
【问题讨论】:
标签: python pandas dataframe nan