一尘不染

在熊猫的DataFrame上插值

python

我有一个DataFrame,说一个波动率表面,索引为时间,列为行权。如何进行二维插值?我可以,reindex但是我该如何处理NaN?我知道我们可以,fillna(method='pad')但是甚至不是线性插值。有没有办法插入我们自己的方法进行插值?


阅读 229

收藏
2020-12-20

共1个答案

一尘不染

您可以DataFrame.interpolate用来获取线性插值。

In : df = pandas.DataFrame(numpy.random.randn(5,3), index=['a','c','d','e','g'])

In : df
Out:
          0         1         2
a -1.987879 -2.028572  0.024493
c  2.092605 -1.429537  0.204811
d  0.767215  1.077814  0.565666
e -1.027733  1.330702 -0.490780
g -1.632493  0.938456  0.492695

In : df2 = df.reindex(['a','b','c','d','e','f','g'])

In : df2
Out:
          0         1         2
a -1.987879 -2.028572  0.024493
b       NaN       NaN       NaN
c  2.092605 -1.429537  0.204811
d  0.767215  1.077814  0.565666
e -1.027733  1.330702 -0.490780
f       NaN       NaN       NaN
g -1.632493  0.938456  0.492695

In : df2.interpolate()
Out:
          0         1         2
a -1.987879 -2.028572  0.024493
b  0.052363 -1.729055  0.114652
c  2.092605 -1.429537  0.204811
d  0.767215  1.077814  0.565666
e -1.027733  1.330702 -0.490780
f -1.330113  1.134579  0.000958
g -1.632493  0.938456  0.492695

对于更复杂的事情,您需要推出自己的函数来处理一个Series对象并根据需要填充NaN值并返回另一个Series对象。

2020-12-20