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

Posted

技术标签:

【中文标题】pandas:将具有相同值的连续行分组为一组【英文标题】:pandas: group the continuous rows with same values into one group 【发布时间】:2021-09-12 05:45:28 【问题描述】:

假设我有一个购买的 pandas 数据框,但没有类似的发票 ID

item_id customer_id
1 A
2 A
1 B
3 C
4 C
1 A
5 A

所以,我的假设是,如果客户连续订购多件商品,它们属于一个组。所以我想创建一个 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

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

非常感谢

【问题讨论】:

【参考方案1】:

IIUC,这是一种方法:

df['order_id'] = df.customer_id.ne(df.customer_id.shift()).cumsum()

输出:

   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

【讨论】:

以上是关于pandas:将具有相同值的连续行分组为一组的主要内容,如果未能解决你的问题,请参考以下文章

pandas-对列中具有相同值的连续行进行分组和聚合

在具有特定值的连续行上定义一个窗口

选择最后一组连续行中的第一行

减去熊猫(Python)中按id分组的数据框中的连续行

计算同一列之间的差异,在python中由另一列分组的连续行

使用给定的一组索引访问 numpy 数组的连续行