如何检测Pandas DataFrame中消费者此前是否有过0推荐记录
Pandas统计客户历史0分推荐记录实现方法
请先确保你的DataFrame已经按照记录产生的时间先后升序排列,否则「当前记录之前」的统计逻辑会出错。如果数据包含记录时间字段,建议先执行
df = df.sort_values(['customer_id', '记录时间字段名'])排序后再做计算。
核心逻辑:按客户分组后,先标记每条记录是否为0分推荐,对标记序列做累计求和得到截止当前行的0分总次数,再把累计结果下移一行得到当前行之前的历史0分次数,最后转换为0/1格式即可。
完整可运行代码如下:
import pandas as pd # 构造测试数据集 data = {'customer_id': [1, 2, 1, 3], 'recommend': [0, 1, 1, 0]} df = pd.DataFrame.from_dict(data) # 计算past列 df['past'] = ( df['recommend'].eq(0) .groupby(df['customer_id']) .apply(lambda x: x.cumsum().shift(1)) .fillna(0) .astype(int) ) print(df)
运行输出结果和你预期的完全一致:
customer_id recommend past 0 1 0 0 1 2 1 0 2 1 1 1 3 3 0 0
内容的提问来源于stack exchange,提问作者vojta
相关产品推荐
相关产品推荐

