【发布时间】:2018-05-10 12:10:02
【问题描述】:
我正在尝试将 1 小时的交易数据箱重新采样到 4 小时的箱中。 问题是我的 pandas 代码还提供了尚未关闭的部分 bin 的输出。
我的意见:
close high low open symbol turnover \
timestamp
2018-05-08 03:00:00 9418.0 9449.0 9408.5 9412.5 XBTUSD 1091577940325
2018-05-08 04:00:00 9423.5 9435.0 9390.0 9418.0 XBTUSD 801492831858
2018-05-08 05:00:00 9414.0 9428.5 9393.5 9423.5 XBTUSD 445420257388
2018-05-08 06:00:00 9337.0 9414.0 9314.5 9414.0 XBTUSD 1349710247828
2018-05-08 07:00:00 9328.5 9359.5 9305.0 9337.0 XBTUSD 1103092129997
2018-05-08 08:00:00 9355.0 9359.5 9328.5 9328.5 XBTUSD 647813850343
2018-05-08 09:00:00 9376.0 9383.0 9355.0 9355.0 XBTUSD 597066647876
2018-05-08 10:00:00 9312.0 9376.5 9241.5 9376.0 XBTUSD 1933554301163
2018-05-08 11:00:00 9296.0 9338.0 9275.5 9312.0 XBTUSD 1318169059747
2018-05-08 12:00:00 9201.5 9305.0 9178.0 9296.0 XBTUSD 2058057970783
我的输出:
open high low close volume vwap \
timestamp
2018-05-08 04:00:00 9418.0 9435.0 9305.0 9328.5 346736372 9380.972675
2018-05-08 08:00:00 9328.5 9383.0 9241.5 9296.0 419074812 9332.798550
2018-05-08 12:00:00 9296.0 9305.0 9178.0 9201.5 189922434 9228.497600
请注意,从 12:00 到 16:00 的 4h 间隔包含源的 12:00 小时间隔的部分数据。
我想要的输出应该是这样的:
open high low close volume vwap \
timestamp
2018-05-08 04:00:00 9418.0 9435.0 9305.0 9328.5 346736372 9380.972675
2018-05-08 08:00:00 9328.5 9383.0 9241.5 9296.0 419074812 9332.798550
因此只有整个 12:00 间隔必须关闭才能在重采样过程中提供数据。
到目前为止我的代码:
outputData = srcData.resample('4H').agg({'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last',
'volume': 'sum',
'vwap': 'mean',
'turnover': 'sum',
'symbol': 'first'})
pandas 中是否有可以帮助我的功能,还是我必须想办法在重新采样后切断部分间隔? 干杯 亚历克斯
【问题讨论】:
-
这样做是为了在 agg 方法中添加一个计数,然后消除计数小于 4 的所有结果记录。
标签: python python-3.x pandas dataframe