基于熊猫中列和行的相关值

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

我有如下数据框

Prs 10  20  30  40  50
5   40  40  40  40  40
10  100 100 100 100 100
15  150 150 150 150 150
25  256 256 260 264 268
40  291 291 293 296 300

[第一列是pressure,其余列是temperature。表格中的值为“速度”。我们阅读此表的方式是在5压力和10的温度下,速度是40。类似地,在25压力和40的温度下,速度是264。

但是,我想知道如何获得压力和温度的速度,这些速度未在表中明确列出,但在表中提到的范围内。例如,压力12.6和温度21.2的速度是多少?我怎么做?我可以尝试以0.1的间隔来推断压力列,以0.1的间隔推断温度,然后填充值,但这会使该表过于繁琐和复杂。

还有其他方法吗?熊猫的关联函数在这里派上用场吗?请指导。注:例如,在完整表中,一段时间之间的速度也会降低。例如,当prs = 90&temp = 75时,速度为515,但是当prs = 90&temp = 85时,速度为480。

python pandas
1个回答
0
投票

这是2D插值。这样做之后,无论是熊猫还是麻木。如果值得的话,您可以安装完整的scipy软件包,然后使用scipy.interpolate.interp2d

val = scipy.interpolate.interp2d(df['Prs'].values, df.columns[1:].astype('int').value,
                                 df.iloc[:, 1:].values)(12.6, 21.2)

这将使用线性插值,但是scipy提供了各种样条方法,只需查看doc


如果没有安装完整的程序,则可以先在压力值处插入列[[手动,然后在温度值处插入结果数组:

def interp(x,y): it = [np.interp(x, df['Prs'], df.iloc[:, i]) for i in range(1, len(df.columns))] return np.interp(y, df.columns[1:].astype('float'), it) interp(12.6, 21.2)
预期返回126.0
© www.soinside.com 2019 - 2024. All rights reserved.