如何在时间戳下加/减整数和整数数组
#first block: calculating last purchase date
from datetime import timedelta
last_purchase_date = (sales_data['TRANSAC_DATE'].max()) + timedelta(days=1)
print("Last purchase Date: ", sales_data['TRANSAC_DATE'].max())
print("Recency/Last purchase Date: ", last_purchase_date)
#Second block: calculating Recency of last purchase in RFM analysis
RFM = sales_data.groupby(['CLIENT_ID']).agg({
'CLIENT_ID': lambda x: (last_purchase_date - x.max()).days,
'Transaction_ID': 'count',
'NET': 'sum'
})
#Error line: lambda x: (last_purchase_date - x.max()).days
RFM.rename(columns={'CLIENT_ID': 'Recency', 'Transaction_ID': 'Frequency', 'NET': 'MonetaryValue'}, inplace= True)
display(RFM)
问题:我想计算最近的天数,但我无法从最后购买日期(时间戳)中减去输出的 x.max(),这个输出是一个整数数组。#错误行: lambda x: (last_purchase_date - x.max()).days #错误信息: 不再支持将整数和整数数组与时间戳进行加减运算。与其加减 n
,不如使用 n * obj.freq
1 个回答
0
根据你提问的内容,我理解到的是——sales_data
是你的 DataFrame
,而 last_purchase_date
是 timestamp
。如果我理解得没错,可以试试这个:
import pandas as pd
last_purchase_date = pd.Timestamp(last_purchase_date)
def calculate_recency(x):
return (last_purchase_date - x.max()).days
RFM = sales_data.groupby(['CLIENT_ID']).agg({
'CLIENT_ID': calculate_recency,
'Transaction_ID': lambda x: len(x),
'NET': 'sum'
})
RFM.rename(columns={'CLIENT_ID': 'Recency', 'Transaction_ID': 'Frequency', 'NET': 'MonetaryValue'}, inplace=True)
display(RFM)