在熊猫中分组后将系列索引转换为 df 列



以下代码

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()

请注意,如果有许多列,它将计入所有列。

最新更新