我有一个DataFrame,比如一个波动表面,其索引为时间和列作为罢工。我如何做二维插值?我可以reindex
但我该如何处理NaN
?我知道我们可以fillna(method='pad')
但它甚至不是线性插值。有没有一种方法可以插入我们自己的插值方法?在熊猫数据框上的插值
25
A
回答
33
您可以使用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
对象。
6
旧的线程,但认为我会分享我的解决方案2d外插/插值,尊重索引值,这也是按需工作。代码结束了有点奇怪,让我知道是否有更好的解决方案:
import pandas
from numpy import nan
import numpy
dataGrid = pandas.DataFrame({1: {1: 1, 3: 2},
2: {1: 3, 3: 4}})
def getExtrapolatedInterpolatedValue(x, y):
global dataGrid
if x not in dataGrid.index:
dataGrid.ix[x] = nan
dataGrid = dataGrid.sort()
dataGrid = dataGrid.interpolate(method='index', axis=0).ffill(axis=0).bfill(axis=0)
if y not in dataGrid.columns.values:
dataGrid = dataGrid.reindex(columns=numpy.append(dataGrid.columns.values, y))
dataGrid = dataGrid.sort_index(axis=1)
dataGrid = dataGrid.interpolate(method='index', axis=1).ffill(axis=1).bfill(axis=1)
return dataGrid[y][x]
print getExtrapolatedInterpolatedValue(2, 1.4)
>>2.3
+0
漂亮的解决方案。对我来说工作得很好。感谢您的发表! – HeinzKurt
相关问题
- 1. 在熊猫数据框中插入值
- 2. 在熊猫数据框上滚动PCA
- 3. 熊猫数据框插入行
- 4. 使用熊猫系列提取熊猫数据框的值
- 5. 重置大熊猫数据框的值
- 6. 熊猫:转换数据框列值插入新的数据框指数和列
- 7. 熊猫数据帧插值失踪日
- 8. 熊猫插值()向后数据帧
- 9. 熊猫插入“:”入数值
- 10. 随机将NA的值插入到熊猫数据框中
- 11. 熊猫数据框 - 删除异常值
- 12. 熊猫数据框通用列值
- 13. 熊猫数据框,按值复制
- 14. 熊猫:增加值数据框中
- 15. 熊猫数据框中唯一值
- 16. 熊猫 - 手动创建数据框和插入值
- 17. 熊猫分裂数据框
- 18. 由熊猫数据框中
- 19. 熊猫数据框绘图
- 20. 从熊猫数据框中
- 21. 从熊猫数据框中
- 22. 修改熊猫数据框
- 23. 熊猫数据框到RDD
- 24. 熊猫数据框(选择)
- 25. 从熊猫数据框中
- 26. 熊猫数据框图
- 27. 熊猫:写入数据框
- 28. 熊猫数据框计算
- 29. 熊猫数据框合并
- 30. 从熊猫数据框中
Avaris,非常感谢您的答案! – archlight
这是一个好主意,将它作为fillna中的一个选项。 – DanB
如果在插值步骤中有另一维(或类别)保持不变(单独)会怎么样?即,我怎样才能将你的精彩解决方案与groupby结合起来?现在,如果索引有重复值(例如,它们在我希望分组的不同类别中是相同的),则reindex()步骤失败,声称“Reindexing只对唯一赋值的索引对象有效”。 (也许这应该是一个新问题?) – CPBL