我很想知道如何为纯数值和日期时间类型索引对熊猫数据框的列进行内插/重采样/外推。我想通过直接线性插值或样条插值来执行此操作。
首先考虑一个简单的pandas数据框架,该框架具有数字索引(表示时间)和几列:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10,2), index=np.arange(0,20,2))
print(df)
0 1
0 0.937961 0.943746
2 1.687854 0.866076
4 0.410656 -0.025926
6 -2.042386 0.956386
8 1.153727 -0.505902
10 -1.546215 0.081702
12 0.922419 0.614947
14 0.865873 -0.014047
16 0.225841 -0.831088
18 -0.048279 0.314828
我想在一些更密集的时间索引网格上对该数据帧的列进行重新采样,该网格可能会扩展到最后一个时间索引之外(因此需要外推)。
表示索引的密集网格,例如:
t = np.arange(0,40,.6)
大熊猫数据帧的插值方法似乎只对nan插值,因此要求那些新索引(可能与原始索引一致或不与原始索引一致)已成为数据帧的一部分。我想我可以将新索引处的nans数据框追加到原始数据框(不包括出现在旧数据框和新数据框中的任何索引),然后调用插值,然后删除原始时间索引。或者,我可以使用scipy进行所有操作,并在所需的时间索引处创建一个新的数据框。
还有更直接的方法吗?
此外,我想知道当索引实际上是日期时间时如何做同样的事情。就是说,例如:
df.index = np.array('2015-07-04 02:12:40', dtype=np.datetime64) + np.arange(0,20,2)