如何在时间戳下加/减整数和整数数组

0 投票
1 回答
44 浏览
提问于 2025-04-12 04:24
#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_datetimestamp。如果我理解得没错,可以试试这个:

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)

撰写回答