我有一个数据框,其中包含我在证券交易所执行的订单。在大多数情况下,我会收到部分购买订单。所有订单执行均在同一秒内。通常。
所以我可以使用groupby概述我的交易。但是,有时部分订单执行的时间并不完全相同。这就是我的问题所在。
我如何在2分钟的时间内获取所有订单确认,以忽略时间上的细微差异?
例如,这是我的输入
2019-09-17 18:30:46 23.5600 100.0 BOT 2356.0000
2019-09-17 18:30:47 23.5600 82.0 BOT 1931.9200
2019-09-17 18:30:47 23.5600 100.0 BOT 2356.0000
2019-09-17 18:30:47 23.5600 100.0 BOT 2356.0000
2019-09-17 18:30:47 23.5600 100.0 BOT 2356.0000
2019-09-17 18:30:47 23.5600 100.0 BOT 2356.0000
2019-09-17 18:30:47 23.5600 100.0 BOT 2356.0000
2019-09-17 18:30:47 23.5600 100.0 BOT 2356.0000
我希望它看起来像下面这样,但是18:30:46的第一行造成了混乱。
2019-09-17 18:30:47 23.560000 782.0 18423.9200
我的代码非常简单。
tradesum = tradeoverview.groupby(tradeoverview.index).sum()
我该如何解决这个问题?也许我可以将df重新采样到2分钟的时间间隔?但是然后,我仍然冒着在间隔的两侧完全分割订单的风险。
答案 0 :(得分:2)
您可以使用resample
方法基本上根据其日期时间索引将数据分组多秒钟或几分钟(或其他时间单位)。在这里,我每两秒钟通过'2s'
进行采样,您可以每分钟通过'1m'
进行采样,等等。
df.resample('2s').agg({'c1': 'max',
'c2': 'sum',
'c3': 'max',
'c4': 'sum'
})
假设列名称为dt, c1, c2, c3, c4
c1 c2 c3 c4
dt
2019-09-17 18:30:46 23.56 782 BOT 18423.92