Error in gapfilling by row in Pandas有关,我想插值而不是使用fillna。目前,我正在这样做:

df.ix[:,'2015':'2100'].interpolate(axis = 1, method = 'linear')


但是,这似乎不能替代NaN。有什么建议吗?

- 编辑
这似乎也不起作用:

df.apply(pandas.Series.interpolate, inplace = True)

最佳答案

这看起来像个错误(我将Pandas 0.16.2与Python 3.4.3结合使用)。

使用数据的子集:

>>>df.ix[:3, '2015':'2020']
       2015  2016  2017  2018  2019      2020
0  0.001248   NaN   NaN   NaN   NaN  0.001281
1  0.009669   NaN   NaN   NaN   NaN  0.009963
2  0.020005   NaN   NaN   NaN   NaN  0.020651


线性插值工作正常,并返回一个新的数据帧。

>>> df.ix[:3, '2015':'2020'].interpolate(axis=1, method='linear')
       2015      2016      2017      2018      2019      2020
0  0.001248  0.001255  0.001261  0.001268  0.001275  0.001281
1  0.009669  0.009728  0.009786  0.009845  0.009904  0.009963
2  0.020005  0.020134  0.020264  0.020393  0.020522  0.020651
3  0.025557  0.025687  0.025818  0.025949  0.026080  0.026211


原稿仍未改变。

>>> df.ix[:4, '2015':'2020']
       2015  2016  2017  2018  2019      2020
0  0.001248   NaN   NaN   NaN   NaN  0.001281
1  0.009669   NaN   NaN   NaN   NaN  0.009963
2  0.020005   NaN   NaN   NaN   NaN  0.020651
3  0.025557   NaN   NaN   NaN   NaN  0.026211
4  0.060077   NaN   NaN   NaN   NaN  0.060909


因此,让我们使用inplace=True参数对其进行更改。

df.ix[:3, '2015':'2020'].interpolate(axis=1, method='linear', inplace=True)

>>> df.ix[:4, '2015':'2020']
       2015  2016  2017  2018  2019      2020
0  0.001248   NaN   NaN   NaN   NaN  0.001281
1  0.009669   NaN   NaN   NaN   NaN  0.009963
2  0.020005   NaN   NaN   NaN   NaN  0.020651
3  0.025557   NaN   NaN   NaN   NaN  0.026211
4  0.060077   NaN   NaN   NaN   NaN  0.06090


更改不成立。

关于python - Python插值不适用于行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32682010/

10-12 07:37