我试图创建一个RFM模型,我试图通过减去购买日期和给定的日期段来获得delta值(天(。代码:
latest_date = dt.datetime(2022,6,30)
RFMScore = df.groupby('user_id').agg({'created_at': lambda x: (latest_date - x.max()).days, 'order_id': lambda x: len(x), 'total': lambda x: x.sum()})
RFMScore['created_at'] = RFMScore['created_at'].astype(int)
RFMScore.rename(columns={'created_at': 'Recency',
'order_id': 'Frequency',
'total': 'Monetary'}, inplace=True)
RFMScore.reset_index().head()
return df
该代码返回-:'datetime.datetime'和'datetime.deate'的操作数类型不受支持
latest_date
是datetime
对象,但您正在减去date
对象x.max()
您可以很容易地将日期转换为日期时间,如下所示:
d = x.max()
latest_date - datetime.datetime(d.year, d.month, d.day)