我有一个具有customer_id
,order_id
和Transaction_Date
的数据框。我想为给定的客户查找上次交易日期是什么。
预期输出将具有以下内容:customer_id
,order_id
,Transaction_Date
,last_transaction_date
。
答案 0 :(得分:0)
您可以将groupby与transform,max或min结合使用:
数据:
d = {'customer_id':['customer1','customer2','customer1'],'order_id':[1,2,3],'Transaction_Date':[pd.to_datetime('2019-09-05'),pd.to_datetime('2019-09-06'),pd.to_datetime('2019-09-07')]}
df = pd.DataFrame(data=d)
df
customer_id order_id Transaction_Date
0 customer1 1 2019-09-05
1 customer2 2 2019-09-06
2 customer1 3 2019-09-07
代码
df['last_date'] = df.groupby('customer_id')['Transaction_Date'].transform('max')
结果
customer_id order_id Transaction_Date last_date
0 customer1 1 2019-09-05 2019-09-07
1 customer2 2 2019-09-06 2019-09-06
2 customer1 3 2019-09-07 2019-09-07
答案 1 :(得分:0)
首先可以按照customer_id
和transaction date
的升序对数据进行排序
df = df.sort_values(['customer_id','transaction_date'],ascending = [True, True])
然后使用移位功能
df['last_transaction_date'] = df.groupby('account_id')['transaction_date'].shift(1)
这将为您提供每一行的前一个交易日期,如果它是第一次交易,则为 null。