如何对 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
我有一个如下所示的数据框
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