目的:将用户群体打标为活跃、回流、未注册等
问题:
这样做可以打标成功:
图 数据集1
图 打标成功
而源于我在之前合并月份时的一个小错误(将两年的同一月合并在了一列里),导致我之前是用另一份数据集跑这个代码,但是会报错 keyError:0 (我修改了循环次数 range(12)
图 数据集2
疑问:请教各位为什么第二份dataframe会运行不出来呢?疑问了一上午= =
附上代码:
# 判断新老用户、回流用户、活跃用户
def active_status(data):
status = [] # 存储18个月的状态:unreg/new/active/unactive/return
for i in range(18):
# 本月没有消费
if data[i] == 0:
if len(status) == 0: #97年1月份未消费:未注册
status.append('unreg')
else: # 判断上月状态
if status[i-1] == 'unreg':#一直未消费过
status.append('unreg')
else: # 无论上月是什么 本月未消费则不活跃
status.append('unactive')
# 本月有消费
else:
if len(status) == 0:
status.append('new')
else:
if status[i-1] == 'unactive':
status.append('return')
elif status[i-1] == 'unreg':
status.append('new')
else: #new/active/return
status.append('avtive')
return pd.Series(status, df_purchase.columns) # 每次返回一整行
purchase_states = df_purchase.apply(active_status,axis=1)
purchase_states