Python最快的群组插值

时间:2018-11-26 21:00:13

标签: python pandas pandas-groupby

在Python中,我的数据看起来像这样:

data = pd.DataFrame({'currency':['EUR', 'EUR', 'EUR', 'EUR', 'USD', 'USD', 'USD', 'USD'], 
                   'tenor':[1, 2, 5, 10, 1, 2, 5, 10],
                   'value':[10, 20, np.nan, 100, 1, 2, 3, np.nan]})

我想按货币分组并根据期限对NaN进行线性插值,即我想实现

data.index = data['tenor']
data['value'] = data.groupby('currency')['value'].apply(lambda x: x.interpolate('values'))

问题在于在熊猫中插值非常慢。我在groupby中有数千个组,整个数据框有1000万行。

有没有一种快速的方法可以对组进行插值? 我尝试了numpy

result = data.groupby('currency')[['tenor', 'value']].apply(lambda x: list(fun(x['tenor'].values, x['value'].values)))

其中

def fun(x, y):
    isNaN = np.isnan(y)
    return np.interp(x, x[~isNaN], y[~isNaN])

速度更快,但没有那么快。

您能推荐Python中最快的组内插值吗?

0 个答案:

没有答案