我有一个pandas数组,它的值是"along path",有距离,但是有些值丢失了. Dataframe看起来像这样:

    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

AccumDistValT是累积的数据,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

Python相关问答推荐

SQLGory-file包FilField不允许提供自定义文件名,自动将文件保存为未命名

删除最后一个pip安装的包

Excel图表-使用openpyxl更改水平轴与Y轴相交的位置(Python)

如何制作10,000年及以后的日期时间对象?

如何在Python中并行化以下搜索?

无法使用requests或Selenium抓取一个href链接

Python解析整数格式说明符的规则?

ThreadPoolExecutor和单个线程的超时

使用NeuralProphet绘制置信区间时出错

未知依赖项pin—1阻止conda安装""

如何启动下载并在不击中磁盘的情况下呈现响应?

使用特定值作为引用替换数据框行上的值

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

Geopandas未返回正确的缓冲区(单位:米)

如何按row_id/row_number过滤数据帧

如何在一组行中找到循环?

每次查询的流通股数量

使用np.fft.fft2和cv2.dft重现相位谱.为什么结果并不相似呢?

使用美汤对维基百科表格进行网络刮擦未返回任何内容

如何在不不断遇到ChromeDriver版本错误的情况下使用Selify?