Pandas转换PurchaseDate为datetime后计算Recency报AttributeError求助
解决Recency计算的AttributeError问题
错误核心原因:data['PurchaseDate'].dt.date返回的是Python原生date对象组成的数组(pandas中为object类型),并非pandas的datetime64类型序列,因此无法使用.dt访问器。
推荐高效解决方案
直接用pandas时间戳对象计算,避免转换为Python原生date:
import pandas as pd from datetime import datetime # 确保PurchaseDate转为datetime64类型,无效日期自动转为NaT data['PurchaseDate'] = pd.to_datetime(data['PurchaseDate'], errors='coerce') # 计算Recency:pandas时间戳相减得到Timedelta序列,再提取天数 data['Recency'] = (pd.Timestamp.now() - data['PurchaseDate']).dt.days
小数据集备选方案
若需基于Python date对象计算,可使用apply(大数据集效率较低):
data['Recency'] = data['PurchaseDate'].dt.date.apply(lambda x: (datetime.now().date() - x).days if pd.notna(x) else None)
额外检查步骤
转换后确认是否存在无效日期导致的缺失值:
# 查看缺失日期的数量 print(data['PurchaseDate'].isna().sum())
缺失值对应的Recency会显示为NaN,可根据业务需求选择填充(如中位数)或删除对应行。
内容的提问来源于stack exchange,提问作者Anas Kadi
相关产品推荐
相关产品推荐

