我有一个熊猫数据帧,其中包括一个时间戳和其他 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
值的额外行。我认为您的代码实际上是正确的,您只是从看到所有额外的行中得到了错误的印象。