熊猫数据框:使用线性插值重新采样
问题内容:
我正在尝试使用一种相当基本的重采样方法来处理熊猫数据框。我的数据框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)
问题答案:
尝试在它们上创建两个单独的数据框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 + ...
这样的事情应该可以解决。