Pandas数据框:使用线性插值重采样
我正在尝试让一个比较基础的重采样方法在一个pandas数据框中工作。我的数据框df是以日期时间为索引的,并且包含价格信息。
price
datetime
2000-08-16 09:29:55.755000 7.302786
2000-08-16 09:30:10.642000 7.304059
2000-08-16 09:30:26.598000 7.304435
2000-08-16 09:30:41.372000 7.304314
2000-08-16 09:30:56.718000 7.304334
我想把这个数据降采样到5分钟。使用
df.resample(rule='5Min',how='last',closed='left')
会取到我数据中最接近左边的5分钟的点;类似地,
df.resample(rule='5Min',how='first',closed='left')
会取到最接近右边的点。不过,我想要的是在左边和右边的点之间进行线性插值,也就是说,如果我的df包含两个连续的条目
time t1, price p1
time t2, price p2
和
t1<t<t2 where t is a multiple of 5min
那么重采样后的数据框应该有这个条目
time t, price p1+(t-t1)/(t2-t1)*(p2-p1)
1 个回答
2
试着创建两个独立的数据框,先用 reset_index
让它们的索引变成相同的数字,然后用 fillna
填充缺失值,最后就可以在 df1 和 df2 上进行计算了。例如:
df1 = df.resample(rule='5Min',how='last',closed='left').reset_index().fillna(method='ffill')
df2 = df.resample(rule='5Min',how='first',closed='left').reset_index().fillna(method='ffill')
dt = df1.datetime - df2.datetime
px_fld = df1.price + ...
这样做应该就能解决问题。