熊猫-得分栏

时间:2020-02-27 16:16:53

标签: python pandas dataframe

我有有关客户级别(每个客户1行)的产品销售数据(每个产品1列)。 我正在评估哪些客户更可能对特定产品感兴趣。我列出了10个最相关的产品。 (而且我在多个产品上都有此功能,因此我正在尝试构建一种可扩展的方法)。 我正在尝试根据购买的10种产品中的多少对所有客户进行评分。

比方说我的清单是: prod_x_corr_prod

我如何创建一个计分列(例如prox_x_propensity),该计分列针对每行以及值大于0的每一列加10个相关列呢?

例如,如果客户Y购买了与产品X相关的3个产品,那么他在“ prox_x_score”列中的得分为3。

编辑:感谢大家的反馈。

对于客户5,我将生成2,而对于1,2,3,我将生成1。对于4,0。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作: 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