我有一个数据框
例如,
因此,结果数据框应如下所示:
df
,其中包含NaN
值,我希望动态地用前后非缺失值的平均值替换它们。In [27]: df
Out[27]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 NaN -2.027325 1.533582
4 NaN NaN 0.461821
5 -0.788073 NaN NaN
6 -0.916080 -0.612343 NaN
7 -0.887858 1.033826 NaN
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
例如,
A[3]
是 NaN
,因此它的值应为 (-0.120211-0.788073)/2 = -0.454142。然后,A[4]
应为 (-0.454142-0.788073)/2 = -0.621108。因此,结果数据框应如下所示:
In [27]: df
Out[27]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 -0.454142 -2.027325 1.533582
4 -0.621108 -1.319834 0.461821
5 -0.788073 -0.966089 -1.260202
6 -0.916080 -0.612343 -2.121213
7 -0.887858 1.033826 -2.551718
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
这是处理缺失值的好方法吗?我不能简单地用每列的平均值替换它们,因为我的数据是时间序列并且随时间增长而增加。(初始值可能为$0,最终值可能为$100000,因此平均值为$50000,可能比NaN值大/小得多)。
df.interpolate()
,它会用周围的数值填充“NaN”,但不会使用你用公式计算出的精确数值。 - Ben.T