我有客户级别的产品销售数据(每个产品1列)(每个客户1行)。我正在评估哪些客户更有可能对特定的产品感兴趣。我列出了10种关联度最高的产品。(我为多个产品提供了这种方法,因此我正在尝试构建一种可伸缩的方法)。我试着根据他们购买了这10种产品中的多少来给所有客户打分。
假设我的列表是: prod_x_corr_prod
如何为每一行创建一个遍历10个相关列的记分列(比如prox_x_propensity),并为值>0的每一列添加1?
例如,如果客户Y购买了与产品X相关的产品中的3个,那么他在"prox_x_score“列中的得分将为3。
编辑:感谢大家的反馈。
对于客户5,我会得到2,而对于1,2,3,我会得到1。对于4,0。
发布于 2020-02-28 00:28:58
你可以这样做:df['prox_x_score'] = (df[prod_x_corr_prod] > 0).sum(axis=1)
使用虚拟数据的示例:
import numpy as np
import pandas as pd
prod_x_corr_prod = ["prod{}".format(i) for i in range(1, 11)]
df = pd.DataFrame({col:np.random.choice([0,1], size=5) for col in prod_x_corr_prod})
df['prox_x_score'] = (df[prod_x_corr_prod] > 0).sum(axis=1)
print(df)输出:
prod1 prod10 prod2 prod3 prod4 prod5 prod6 prod7 prod8 prod9 \
0 1 1 1 0 0 1 1 1 1 0
1 1 1 1 0 1 0 0 1 1 0
2 1 1 1 1 0 1 0 0 1 0
3 0 0 0 0 0 0 1 0 1 0
4 0 0 0 0 0 0 0 1 1 0
prox_x_score
0 7
1 6
2 6
3 2
4 2 https://stackoverflow.com/questions/60437486
复制相似问题