我想将nans
替换为:
-如果nan
位于两列中间,且各值均带有两列的平均值(上一列和下一列)
-否则,我希望该值保持系列的相同路径。
例如:
In[1]:
df = pd.DataFrame([[1, 2,np.nan,np.nan], [np.nan, 4,6,8],[3,np.nan,6,np.nan]], columns=['A', 'B','C','D'])
Out[2]:
A B C D
0 1.0 2.0 NaN NaN
1 NaN 4.0 6.0 8.0
2 3.0 NaN 6.0 NaN
Desired output:
Out[2]:
A B C D
0 1.0 2.0 4.0 6.0
1 3.0 4.0 6.0 8.0
2 3.0 4.0 6.0 8.0
我尝试失败,
for col in df.columns:
for i in range(len(df.columns)-1):
prev=df[df.columns[i-1]]
nextval=df[ds.columns[i+1]]
df[col]=df[col].fillna((nextval+prev)/2)
答案 0 :(得分:2)
您可以使用 fillna() 两次:一次使用方法“bfill”,一次使用方法“ffill”,然后对它们求平均值。