使用三次样条函数插值Pandas中的时间序列

use*_*866 5 python pandas

我想使用三次样条填充我的DataFrame中的列中的空白.如果我要导出到列表,那么我可以使用numpy的interp1d函数并将其应用于缺失值.

有没有办法在熊猫里面使用这个功能?

And*_*den 7

大多数numpy/scipy函数要求参数只是"array_like",iterp1d也不例外.幸运的是Series和DataFrame都是"array_like"所以我们不需要留下pandas:

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

df = pd.DataFrame([np.arange(1, 6), [1, 8, 27, np.nan, 125]]).T

In [5]: df
Out[5]: 
   0    1
0  1    1
1  2    8
2  3   27
3  4  NaN
4  5  125

df2 = df.dropna() # interpolate on the non nan
f = interp1d(df2[0], df2[1], kind='cubic')
#f(4) == array(63.9999999999992)

df[1] = df[0].apply(f)

In [10]: df
Out[10]: 
   0    1
0  1    1
1  2    8
2  3   27
3  4   64
4  5  125
Run Code Online (Sandbox Code Playgroud)

注意:我无法想到一个顶端的例子将DataFrame传递给第二个参数(y)......但是这也应该有效.