Python 熊猫根据不同的列插值NaN

Python 熊猫根据不同的列插值NaN,python,pandas,interpolation,Python,Pandas,Interpolation,我有以下数据帧(摘录) 它表示特定坐标(X、Y、Z)和两个边界条件(风向和风速)的CFD模拟结果 我想估算相同点(X,Y,Z)的速度,相同的风向,但中等风速,比如说4.6。我的数据框中还有这一行 NaN -10.89 74.22 1.5 NW 4.6 现在我想根据风速插值以填充NaN。对于上面的例子,我希望得到6.643773541 数字来自线性插值: 0.82+(4.6-1)/(10-1)*(8.48-0.82) 有什么想法吗?谢谢 更新 我已经找到了解决上述问题的办法。诀窍是使用group

我有以下数据帧(摘录)

它表示特定坐标(X、Y、Z)和两个边界条件(风向和风速)的CFD模拟结果

我想估算相同点(X,Y,Z)的速度,相同的风向,但中等风速,比如说4.6。我的数据框中还有这一行

NaN -10.89 74.22 1.5 NW 4.6
现在我想根据风速插值以填充NaN。对于上面的例子,我希望得到6.643773541

数字来自线性插值:

0.82+(4.6-1)/(10-1)*(8.48-0.82)

有什么想法吗?谢谢

更新


我已经找到了解决上述问题的办法。诀窍是使用groupby并定义一个函数,该函数在groupby创建并传递给apply()的数据帧上插值。在我的例子中,这就是函数

def interp(x, wind_speed):
    g = interpolate.interp1d(np.array(x["wind_speed"]), np.array(x["Velocity"]))
    return g(wind_speed)
def interp(x, wind_speed):
    g = interpolate.interp1d(np.array(x["wind_speed"]), np.array(x["Velocity"]))
    return g(wind_speed)
这是我的团员

group = df.groupby("point").apply(interp, wind_speed)
group = df.groupby("point").apply(interp, wind_speed)
必须使用表示执行插值点的参数调用函数interp


我不知道是否有更好的办法。我已经找到了解决上述问题的办法。诀窍是使用groupby并定义一个函数,该函数在groupby创建并传递给apply()的数据帧上插值。在我的例子中,这就是函数

def interp(x, wind_speed):
    g = interpolate.interp1d(np.array(x["wind_speed"]), np.array(x["Velocity"]))
    return g(wind_speed)
def interp(x, wind_speed):
    g = interpolate.interp1d(np.array(x["wind_speed"]), np.array(x["Velocity"]))
    return g(wind_speed)
这是我的团员

group = df.groupby("point").apply(interp, wind_speed)
group = df.groupby("point").apply(interp, wind_speed)
必须使用表示执行插值点的参数调用函数interp

我不知道是否有更好的方法。我的解决方案是通过以下方式对“风速”进行索引:

然后通过索引列进行插值

df.interpolate(method='index', inplace=True)
现在我可以返回上一个状态

df.reset_index(inplace=True)

让我知道它是否顺利…

方法是使用
set\u index
将要插值的值放入索引中。类似于
数据。设置索引(“风速”)['Velocity']。插值(method='index')
。插值没有
级别
参数。不知道你是否需要一个。谢谢。这只是数据帧中的一个点,每个点都与我用于模拟的4个风速相同。因此,索引不是唯一的。对于我测试的每个风向和每个风速,典型的完整数据帧将具有相同的重复点集。这是一个更简单的解决方案,除了“inplace=True”。它将df设置为“None”,并最终生成“AttributeError:“NoneType”对象没有属性“interpolate”。我跳过“inplace”并生成正确答案。
inplace=True
使命令返回
None
,但
df
将应用结果。