滚动加权平均(或类似)填充缺失的熊猫

问题描述 投票:0回答:1

我有 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()
,也许在某些数据帧子集上,但我不太确定该怎么做。感谢您的任何帮助或建议。

python pandas dataframe rolling-computation weighted-average
1个回答
0
投票

根据累计距离使用

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
© www.soinside.com 2019 - 2024. All rights reserved.