Pandas 数据框按 10 分钟间隔分组,对其他列执行不同的操作

Pandas dataframe group by 10 min intervals with different actions on other columns

我有一个 pandas 数据框,其中包括时间戳和其他 71 列,如下所示:

              timestamp           |close_price|highest_price|volume| ...
              2018-09-29 00:00:20 |1809       |1811         |  ... |
              2018-09-29 00:00:34 |1823       |1832         |
              2018-09-29 00:00:59 |1832       |1863         |
              2018-09-29 00:01:09 |1800       |1802         |
              2018-09-29 00:01:28 |1832       |1845         |
              .
              .
              .

我想将数据放入 10 分钟的间隔中,并且我想对每一列进行单独的操作,例如我希望 close_price 列的 10 分钟间隔显示 last 值真正的 table 中相应范围的值,或者对于 highest_price 列,我想要相应范围的 max 值,或者对于 volume 我想要 mean 该范围内的值。我已经试过了

dataTable = datefram.resample("10min").agg({'first_price':'first',
                                       'close_price':'last',
                                       'highest_price': 'max',
                                       'volume':'mean', 
                                        #other attributes...
                                        })

但结果似乎不正确。 还有其他方法可以做我想做的事吗? 我将不胜感激任何评论或想法。

请注意,时间戳值没有特定的模式。在 1 分钟内,我们可以有 0 到 60 行。

如果您的数据跨越多天或多个时期,而您没有任何数据点,则调用 resample() 可能会产生大量具有 NaN 值的额外行。我认为您的代码实际上是正确的,您只是看到所有额外的行而产生了错误的印象。

你的做法是正确的。这 dataframe.resample("10min").agg() 为您计算。 您可能会得到比预期更多的输出,这是因为:resample 方法不断地增加 10 分钟的时间并进行您要求的计算。但是,如果在任何 10 min 间隔中都没有数据,它会创建一个 NULL 行。也许您的数据不连续并导致此 Null 行。

您可以使用 dataframe.dropna()

简单地删除 NULL