2017-12-23 14 views
0

にラップすることは、scipy.interpolate.interp1dを関数にラップするのに苦労しています。 私の入力pd.df:scipy.interpolate.interp1dを関数

In [108]: rates.tail() 
Out[108]: 
       28  91  182  364 
Date          
2017-12-18 0.0125 0.0138 0.0151 0.0169 
2017-12-19 0.0125 0.0137 0.0151 0.0170 
2017-12-20 0.0122 0.0138 0.0151 0.0171 
2017-12-21 0.0120 0.0135 0.0154 0.0172 
2017-12-22 0.0114 0.0133 0.0154 0.0172 

これが、引数としてdateと機能にそれをラップする必要が動作します:任意の助け

x = np.array(rates.columns[0:4]) 
y = np.array(rates.loc[date]) 
f = interp1d(x, y, kind='cubic', fill_value='extrapolate') 

感謝を!

+0

interp1dは、1次元間隔での補間を意味します。あなたのx値は4列の配列ですか?正確に補間されるものは何ですか? – FTP

+0

任意の日付に対して1次元です。指定された日付にレートを補間する必要があります。 – steff

答えて

1

この関数は、日付と数値(以下tと呼びます)を取るように思われます。だから、このことができます

def interpolated(t, date): 
    x = np.array(rates.columns[0:4]) 
    y = np.array(rates.loc[date]) 
    f = interp1d(x, y, kind='cubic', fill_value='extrapolate') 
    return f(t) 

(それが処理するのが好ましいかどう1つはまたratesに渡すことができるパラメータとして代わりのグローバルスコープからそれを取っています)。

+0

Crazy Ivanありがとう!それはまさに私が探していたものです。 – steff