如何按日期时间分组+ /-一分钟?

时间:2019-09-18 18:08:13

标签: python-3.x pandas pandas-groupby

我有一个数据框,其中包含我在证券交易所执行的订单。在大多数情况下,我会收到部分购买订单。所有订单执行均在同一秒内。通常。

所以我可以使用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分钟的时间间隔?但是然后,我仍然冒着在间隔的两侧完全分割订单的风险。

1 个答案:

答案 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