首页 > 解决方案 > 如何按日期时间 + / - 一分钟分组?

问题描述

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

所以我可以使用 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 分钟的时间间隔?但是我仍然冒着订单在区间两边被精确分割的风险。

标签: python-3.xpandaspandas-groupby

解决方案


您可以使用resample方法基本上根据日期时间索引对数据进行分组,无论多少秒或分钟(或其他时间单位)。在这里,我'2s'每 2 秒通过一次采样,您可以'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

推荐阅读