每小时的行数

问题描述

我正在浏览自行车共享数据。

我组合了两个表:一个包含自行车共享数据,另一个包含天气数据。"开始日期"列在自行车共享数据中。"日期"列位于天气数据中。

我想对每小时的ID计数进行分组,以便可以查看天气对自行车使用的影响。

ID 开始 结束 开始日期 持续时间 日期 临时 wdsp
1754125 爱广场南 Glenina 2019年1月1日00:17 00:15:02 2019年1月1日00:00 0.0 9.9 4.0
1754170 棕色门口 高威大学医院 2019年1月1日07:55 00:04:57 01-01-2019年01:00 0.0 9.3 4.0
1754209 新码头街 新码头街 2019年1月1日11:42 02:57:57 2019年1月1日02:00 0.0 9.2 5.0
1754211 克拉达格盆地 招商门 2019年1月1日11:50 00:02:43 01-01-2019年03:00 0.0 9.1 5.0

我已尝试:

data.groupby(['date','ID']).size()
data.groupby(['date','ID']).size().reset_index(name='counts')

但我真的不知道我在做什么。如有任何帮助,我们将不胜感激。


解决方案

我假设您希望能够按ID、日期和小时对行进行计数,因此可以执行以下操作:

df['Date'] = df['Date Start'].dt.normalize()
df['hour'] = df['Date Start'].apply(lambda x: x.hour)

要获取日期和完整小时数:

     ID              Start                         End          Date Start  
0  1754125  Eyre Square South                     Glenina 2019-01-01 00:17:00   
1  1754170      Brown Doorway  University Hospital Galway 2019-01-01 07:55:00   
2  1754209    New Dock Street             New Dock Street 2019-01-01 11:42:00   
3  1754211     Claddagh Basin              Merchants Gate 2019-01-01 11:50:00   

   Duration              date  rain  temp  wdsp       Date  hour  
0  00:15:02  2019-01-01 00:00   0.0   9.9   4.0 2019-01-01     0  
1  00:04:57  2019-01-01 01:00   0.0   9.3   4.0 2019-01-01     7  
2  02:57:57  2019-01-01 02:00   0.0   9.2   5.0 2019-01-01    11  
3  00:02:43  2019-01-01 03:00   0.0   9.1   5.0 2019-01-01    11  

然后使用GROUP BY:

df.groupby(['ID','Date','hour']).size()

,它返回

ID        Date        hour
1754125  2019-01-01  0       1
1754170  2019-01-01  7       1
1754209  2019-01-01  11      1
1754211  2019-01-01  11      1
dtype: int64

相关文章