假设我有以下数据框,
A B C D E
0 1.625627 8.910396 9.171640 1.980580 8.429633
1 7.228290 6.431085 5.399684 8.442247 2.609367
2 NaN NaN NaN NaN NaN
3 2.533768 3.877104 8.199575 5.138173 7.248905
4 0.351828 1.233081 1.004183 6.497358 0.76487
并且我想遍历每一行以将 NaN 值替换为上限值和下限值之间的平均值。
我尝试使用以下代码,但没有任何结果:
for i, row in df.iterrows():
if i in row[:] > 1.0:
print(i)
答案 0 :(得分:3)
使用 fillna()
和 shift()
。 shift(1)
会给你更高的值(因为它向下移动数据帧),而 shift(-1)
会给你更低的值(因为它向上移动数据帧)。
df = df.fillna((df.shift(1)+df.shift(-1))/2)
或
df.fillna((df.shift(1)+df.shift(-1))/2, inplace = True)