gpt4 book ai didi

python - pandas 0.22,仅重新采样完整的箱子,丢弃部分

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:51 27 4
gpt4 key购买 nike

我正在尝试将 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 的 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 中是否有一个函数可以帮助我,或者我是否必须想出一种方法来在重采样后切断部分间隔?干杯亚历克斯

最佳答案

您可以在 agg 方法中添加一个计数,然后使用该计数列来过滤生成的数据框以仅显示“完整容器”。

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

关于python - pandas 0.22,仅重新采样完整的箱子,丢弃部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50272670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com