我有一个DataFrame,说一个波动率表面,索引为时间,列为行权。如何进行二维插值?我可以,reindex但是我该如何处理NaN?我知道我们可以,fillna(method='pad')但是甚至不是线性插值。有没有办法插入我们自己的方法进行插值?
reindex
NaN
fillna(method='pad')
您可以DataFrame.interpolate用来获取线性插值。
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对象。
Series