假设我们有一个这样的数据框:
customer_id,purchase_date
A,2019-10-05
A,2019-10-02
A,2019-10-01
A,2019-10-03
B,2019-10-01
B,2019-10-03
C,2019-10-04
如何生成新列以显示每个客户的第n个订单进度,以便获得如下所示的数据框:
customer_id,purchase_date,order_num,
A,4
A,2
A,1
A,3
B,1
B,2
C,1
答案 0 :(得分:3)
您可以执行groupby().cumcount()
:
df['order_num'] = df.sort_values('purchase_date').groupby('customer_id').cumcount() + 1
输出:
customer_id purchase_date order_num
0 A 2019-10-05 4
1 A 2019-10-02 2
2 A 2019-10-01 1
3 A 2019-10-03 3
4 B 2019-10-01 1
5 B 2019-10-03 2
6 C 2019-10-04 1