pandas:将具有相同值的连续行分组为一组

mom*_*ind 2 python numpy list dataframe pandas

假设我有一个购买的 pandas 数据框,没有这样的发票 ID

item_id customer_id
1 A
2 A
1 B
3 C
4 C
1 A
5 A
Run Code Online (Sandbox Code Playgroud)

因此,我的假设是,如果客户连续订单购买了多个商品,则它们属于一组。所以我想创建一个 order_id 列:

item_id customer_id order_id
1 A 1
2 A 1
1 B 2
3 C 3
4 C 3
1 A 4
5 A 4
Run Code Online (Sandbox Code Playgroud)

order_id 应自动创建且增量。我应该如何处理熊猫呢?

非常感谢

Nk0*_*k03 5

IIUC,这是一种方法:

df['order_id'] = df.customer_id.ne(df.customer_id.shift()).cumsum()
Run Code Online (Sandbox Code Playgroud)

输出:

   item_id customer_id  order_id
0        1           A         1
1        2           A         1
2        1           B         2
3        3           C         3
4        4           C         3
5        1           A         4
6        5           A         4
Run Code Online (Sandbox Code Playgroud)