Pandas Dataframe 组,间隔10分钟,对其他列执行不同操作

pnwntuvh  于 2022-12-10  发布在  其他
关注(0)|答案(2)|浏览(155)

我有一个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行。

hzbexzde

hzbexzde1#

您的方法是正确的。dataframe.resample("10min").agg()为您执行计算。您可能会得到比预期更多的输出,这是因为:resample方法会连续地将时间加上10分钟,并执行您要求的计算。但是,如果在任何10 min间隔中没有数据,它就会建立NULL数据列。可能是您的数据不连续,而造成这个Null数据列。
您只需使用dataframe.dropna()删除NULL行即可

ssgvzors

ssgvzors2#

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

相关问题