与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/