如何从Python表中获取将在列和行之间插值的值?

2024-05-14 07:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在Pandas中创建了表(DataFrame)。它是一个二维表,其中整数作为列索引,整数作为行索引(它是position xposition y)。 我知道如何使用索引获取表“cell”中的值,但我希望从“from between”列和行中获取值,这些值将被线性插值。在

最好,我希望对保存在两个表Position_x(m x n)Position_y(m x n)中的大量x,y进行此操作,并将结果放入表Results(m x n)

https://i.stack.imgur.com/utv03.png

以下是Excel中的此类过程示例: https://superuser.com/questions/625154/what-is-the-simplest-way-to-interpolate-and-lookup-in-an-x-y-table-in-excel

谢谢 西门


Tags: infromhttpscomdataframepandasstackposition
2条回答

我发现了一种90%有效的方法,但是它有两个缺点: 1) 索引和列需要严格增加, 2) 对于一组n个输入对,它将绘制n x n个结果数组,而不仅仅是n个结果(例如,对于3对输入点,我只需要3个结果值,使用该代码,我将得到9个值作为所有输入点的组合)。在

以下是我发现的:

import scipy
import scipy.interpolate
import numpy as np
import pandas as pd

x=np.array([0,10,25,60,100])       #Index
y=np.array([1000,1200,1400,1600])  #Column

data=np.array([[60,54,33,0],
              [50,46,10,0],
              [42,32,5,0],
              [30,30,2,0],
              [10,10,0,0]])

Table_to_Interpolate=pd.DataFrame(data,index=x,columns=y)
sp=scipy.interpolate.RectBivariateSpline(x,y,data, kx=1, ky=1, s=0)
scipy.interpolate.RectBivariateSpline(x,y,data, kx=1, ky=1, s=0)
Input_Xs=12, 44, 69
Input_Ys=1150, 1326, 1416

Results=pd.DataFrame(sp(Input_Xs, Input_Ys), index=Input_Xs, columns=Input_Ys,)

这并不完美,但这是我能找到的最好的。在

如果我理解你的问题:

首先可以使用pandas.melt将多列结果表转换为单列结果表。在

然后,可以使用ben-t great answer进行插值。在

希望我帮了忙。在

相关问题 更多 >

    热门问题