我有一个数据框架,其中包含了从44个独特个体收集的数年生命记录数据.
Int64Index: 77171 entries, 0 to 4279
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 start 77171 non-null datetime64[ns]
1 end 77171 non-null datetime64[ns]
2 labelName 77171 non-null category
3 id 77171 non-null int64
start
列包含2020-11-01 11:00:00
格式的精细日期时间,间隔为30分钟.labelName
列有14个不同的类别.
Categories (14, object): ['COOK', 'EAT', 'GO WALK', 'GO TO BATHROOM', ..., 'DRINK', 'WAKE UP', 'SLEEP', 'WATCH TV']
这是一个用户的头部样本,它是[2588 rows x 4 columns]
,范围从2020年到2021.有时,数据中也存在差距.
start end labelName id
0 2020-08-05 00:00:00 2020-08-05 00:30:00 GO TO BATHROOM 486
1 2020-08-05 06:00:00 2020-08-05 06:30:00 WAKE UP 486
2 2020-08-05 09:00:00 2020-08-05 09:30:00 COOK 486
3 2020-08-05 11:00:00 2020-08-05 11:30:00 EAT 486
4 2020-08-05 12:00:00 2020-08-05 12:30:00 EAT 486
.. ... ... ... ...
859 2021-03-10 12:30:00 2021-03-10 13:00:00 GO TO BATHROOM 486
861 2021-03-10 13:30:00 2021-03-10 14:00:00 GO TO BATHROOM 486
862 2021-03-10 18:30:00 2021-03-10 19:00:00 COOK 486
864 2021-03-11 08:00:00 2021-03-11 08:30:00 EAT 486
865 2021-03-11 12:30:00 2021-03-11 13:00:00 COOK 486
我希望每个用户每月有labelNames
个唯一的总数,但我不知道如何做到这一点.
我首先将数据帧拆分为id
,这很容易.但是,当它在几年内每隔30分钟记录一次数据时,如何拆分这start
个日期时间,然后创建14个新列来记录总和?
最终数据帧可能如下所示(带有假值):
user | month | SLEEP | ... | WATCH TV |
---|---|---|---|---|
486 | jun20 | 324 | ... | 23 |
486 | jul20 | 234 | ... | 12 |
这个数据框架的用例是训练一些统计和机器学习模型.
我如何实现这样的目标?