【发布时间】:2023-03-23 13:41:01
【问题描述】:
我有一个带有 NaN 值的数据框 df,我想用上一个和下一个非缺失值的平均值动态替换它们。
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
这是处理缺失值的好方法吗?我不能简单地replace them by the average values of each column,因为我的数据是时间序列的,并且会随着时间的推移而增加。 (初始值可能是 0 美元,最终值可能是 100000 美元,所以平均值是 50000 美元,这可能比 NaN 值大/小得多)。
【问题讨论】:
-
您是否真的依附于您为填写
NaN提供的公式,或者您只是想在前后有一个接近另一个值的值。试试df.interpolate(),它会在NaN中填充您要查找的值,但不会使用您使用公式计算的确切值