每小时的行数
问题描述
我正在浏览自行车共享数据。
我组合了两个表:一个包含自行车共享数据,另一个包含天气数据。"开始日期"列在自行车共享数据中。"日期"列位于天气数据中。
我想对每小时的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
相关文章