什么不起作用:
def ATVScore(x,p,d):
if x <= d[p][0.25]:
return 4
elif x <= d[p][0.50]:
return 3
elif x <= d[p][0.75]:
return 2
else:
return 1
df_segmented['atv_quartile'] = df_segmented['Average_Transaction_Value'].apply(ATVScore, args = ('Average_Transaction_Value', quantiles,))
工作原理:
分位数定义:
quantiles = df_final_table.quantile(q=[0.25,0.5,0.75])
quantiles = quantiles.to_dict()
def RScore(x,p,d):
if x <= d[p][0.25]:
return 1
elif x <= d[p][0.50]:
return 2
elif x <= d[p][0.75]:
return 3
else:
return 4
def FMScore(x,p,d):
if x <= d[p][0.25]:
return 4
elif x <= d[p][0.50]:
return 3
elif x <= d[p][0.75]:
return 2
else:
return 1
df_segmented['recency_quartile'] = df_segmented['recency'].apply(RScore, args = ('recency', quantiles,))
df_segmented['frequency_quartile'] = df_segmented['frequency'].apply(FMScore, args = ('frequency', quantiles,))
df_segmented['monetary_quartile'] = df_segmented['monetary'].apply(FMScore, args = ('monetary', quantiles,))
数据:
错误:
代码的问题很可能出现在分位数的内容中
创建此变量后,打印其内容。 它可能包含以下内容:
(作为每个嵌入式字典的值,我传递了任意值)
现在,当应用ATVScore时,剩下的参数如下 “平均交易值”asp和分位数asd,此函数:
if x <= d[p][0.25]:
(几乎在任务结束时) StackTrace)d[p]
它尝试查找的“平均事务值” 输入分位数将平均事务值键添加到分位数,值为 类似于{0.25:410.0,0.5:560.0,0.75:660.0}} 您的代码应该运行无误
相关问题 更多 >
编程相关推荐