我有 pandas 数据框,其值“沿路径”、距离,但某些值丢失。 数据框看起来像这样:
Idx AccumDist ValT
0 1 3059 112
1 2 4281 194
2 3 4947 NaN
3 4 5460 NaN
4 5 5811 543
5 6 6021 591
6 7 6289 NaN
7 8 7487 909
8 9 8031 954
9 10 8242 1069
AccumDist
和ValT
是累积的数据,有些ValT
是“缺失”的。
我想要做的是将 ValT
列中的 NaN 替换为该列中最接近的“已知”数据的平均值,并按 AccumDist
差异进行加权。
因为可能会丢失一个又一个的
ValT
值(可能超过1),我不能使用滚动加权平均值(或者我不知道如何使用它),而我仍然只想平均“最接近的已知值” “价值观。
我正在考虑使用
df.shift()
,也许在某些数据帧子集上,但我不太确定该怎么做。感谢您的任何帮助或建议。
根据累计距离使用
interpolate
。将其设置为索引并使用 method='index'
。然后使用类似大小的 numpy 数组将此计算分配回您的 DataFrame。
df['ValT_filled'] = df.set_index('AccumDist')['ValT'].interpolate(method='index').to_numpy()
# Idx AccumDist ValT ValT_filled
#0 1 3059 112.0 112.000000
#1 2 4281 194.0 194.000000
#2 3 4947 NaN 345.917647
#3 4 5460 NaN 462.935294
#4 5 5811 543.0 543.000000
#5 6 6021 591.0 591.000000
#6 7 6289 NaN 649.133697
#7 8 7487 909.0 909.000000
#8 9 8031 954.0 954.000000
#9 10 8242 1069.0 1069.000000