我正在尝试将1小时的交易数据重新采样到4小时的箱子中。 问题是我的pandas代码还提供了尚未关闭的部分箱的输出。
我的输入:
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的4小时间隔包含来自源的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中是否有一个功能可以帮助我或者我必须找到一种方法来重新采样后切掉部分间隔? 干杯 亚历
答案 0 :(得分:1)
您可以在agg方法中添加一个计数,然后使用该计数列过滤生成的数据框,以仅显示“完整的bin”。
df_out = df.resample('4H').agg({'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last',
'turnover': 'sum',
'symbol': ['first','count']})
df_out.columns = df_out.columns.map('_'.join)
df_out.query('symbol_count == 4')
输出:
open_first high_max low_min close_last turnover_sum symbol_first symbol_count
timestamp
2018-05-08 04:00:00 9418.0 9435.0 9305.0 9328.5 3699715467071 XBTUSD 4
2018-05-08 08:00:00 9328.5 9383.0 9241.5 9296.0 4496603859129 XBTUSD 4