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



我有一个熊猫数据帧,其中包括一个时间戳和其他 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值,或者对于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 行。

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

您可以使用dataframe.dropna()简单地删除NULL

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

相关内容

最新更新