以下代码
testIDs.groupby(
['id', pd.TimeGrouper(key='date',freq='20s')]
)['quadrant'].value_counts()
给我:
Out[128]:
id date quadrant
2617 2019-10-08 18:47:40 4 1
2019-10-08 18:54:00 1 1
3 1
2019-10-08 18:54:40 0 1
3 1
2019-10-08 18:56:20 3 1
2019-10-08 18:59:20 2 1
2019-10-08 19:05:40 1 1
2019-10-08 19:06:20 1 2
4 1
2019-10-08 19:06:40 0 1
1 1
2019-10-08 19:07:00 2 2
0 1
3 1
2019-10-08 19:13:40 2 1
2019-10-08 19:14:20 0 1
2 1
2019-10-08 19:16:40 3 1
2019-10-08 19:18:40 1 3
0 2
3 2
2 1
2019-10-08 19:19:00 4 3
1 2
0 1
2 1
2019-10-08 19:19:20 4 6
2 1
2019-10-08 19:19:40 3 2
..
2855 2019-10-08 19:44:20 4 4
1 2
2 2
2019-10-08 19:44:40 4 8
2019-10-08 19:45:00 4 3
1 2
2 2
0 1
2019-10-08 19:45:20 4 7
2 1
2019-10-08 19:45:40 4 4
2 2
1 1
3 1
2019-10-08 19:46:00 1 3
4 2
0 1
2 1
3 1
2019-10-08 19:46:20 2 4
1 3
4 1
2019-10-08 19:46:40 1 3
2 3
3 1
4 1
2019-10-08 19:47:00 0 2
1 1
2 1
4 1
Name: quadrant, Length: 714, dtype: int64
最终输出应是一个热图,其中日期为 X 轴,id 为 Y 轴,象限计数为值。我想根据象限和象限计数在时间上比较 id。
为此,如何将这个系列转换为数据帧,并将多索引作为 df 列?
非常感谢您的帮助!!
> 似乎您所需要的只是重置索引,并使用聚合来完全返回数据帧:
testIDs.groupby(
['id', pd.TimeGrouper(key='date',freq='20s')]
).agg({'quadrant':'count'}).reset_index()
编辑:如果您的象限也要分组:
testIDs.groupby(
['id', pd.TimeGrouper(key='date',freq='20s'), 'quadrant']
).count().reset_index()
请注意,如果有许多列,它将计入所有列。