熊猫:将Bin日期间隔30分钟并计算平均值

时间:2018-09-20 14:02:25

标签: python python-3.x pandas average bins

我有一个熊猫数据框,其中有两列,分别为exitspeed

time

我想计算每30分钟的垃圾箱平均速度。例如,第4个bin(1:31-2:00)期间的平均速度为(54.72 + 49.37 + 37.03)/ 3。我曾想过将小时,分钟和秒从00:00转换为秒,然后将其设为1800秒。我曾尝试从scipy.stats中使用binned_statistic,但是我的主要问题是我无法找到一种基于日期分离垃圾箱并获取平均速度的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:10)

转换为日期时间并使用pandas.Grouper + Offset Aliases

df['date'] = pd.to_datetime(df.date)
df.groupby(pd.Grouper(key='date', freq='30min')).mean().dropna()

    speed
date    
2018-09-20 01:30:00     47.040000
2018-09-20 07:30:00     26.311429
2018-09-20 10:30:00     39.947500
2018-09-20 11:00:00     32.298000

答案 1 :(得分:5)

由于您的body { background-image: linear-gradient(to right top, #3498db, #1e82b9, #0b6d97, #025877, #034359); background-color: blue; }列实际上不是日期,因此将其转换为date而不使用日期可能更明智。

然后,您可以使用timedelta分组为30分钟的垃圾箱。

dt.floor

输出:

import pandas as pd

df['date'] = pd.to_timedelta(df.date)
df.groupby(df.date.dt.floor('30min')).mean()