我有一个Pandas Dataframe ,其中包括一个时间戳和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...
})
但结果似乎是不正确的。2有没有其他的方法来做我想做的事?3我将感谢任何评论或想法。
请注意,时间戳值没有特定的模式。在1分钟内,我们可以有0到60行。
2条答案
按热度按时间hzbexzde1#
您的方法是正确的。
dataframe.resample("10min").agg()
为您执行计算。您可能会得到比预期更多的输出,这是因为:resample
方法会连续地将时间加上10分钟,并执行您要求的计算。但是,如果在任何10 min
间隔中没有数据,它就会建立NULL
数据列。可能是您的数据不连续,而造成这个Null
数据列。您只需使用
dataframe.dropna()
删除NULL
行即可ssgvzors2#
如果您的数据跨越了多天或多个期间,而您没有任何数据点,则调用
resample()
可能会导致大量具有NaN
值的额外行。我认为您的代码实际上是正确的,您只是看到了所有额外行而产生了错误的印象。