如何对 pandas 数据框的连续行进行分组

How to group consecutive rows of a pandas dataframe

我有一个如下所示的数据框

store_id Rank 3-Modulo-of-Rank Modulo_Group
2345 1 1 G1
123 2 2 G2
324 3 0 G3
241 4 1 G1
111 5 2 G2
124 6 0 G3

此数据框按排名顺序排序。

我想根据 G1、G2 和 G3 将此数据的每 3 行分组如下所示

store_id Rank 3-Modulo-of-Rank Modulo_Group Key group
2345 1 1 G1 K1
123 2 2 G2 K1
324 3 0 G3 K1
241 4 1 G1 K2
111 5 2 G2 K2
124 6 0 G3 K2
-- -- - - K3

等等

使用groupby_cumcount:

>>> df['Key group'] = 'K' + df.groupby('Modulo_Group').cumcount().add(1).astype(str)

输出:

>>> df
   store_id  Rank  3-Modulo-of-Rank Modulo_Group Key group
0      2345     1                 1           G1        K1
1       123     2                 2           G2        K1
2       324     3                 0           G3        K1
3       241     4                 1           G1        K2
4       111     5                 2           G2        K2
5       124     6                 0           G3        K2