繁体   English   中英

在 Pandas 中的 groupby 之后将系列索引转换为 df 列

[英]Convert Series index to df columns after groupby in Pandas

以下代码

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM