Pandas - оценочная колонка - PullRequest
       1

Pandas - оценочная колонка

0 голосов
/ 27 февраля 2020

У меня есть данные о продажах продукта (1 столбец на продукт) на уровне клиента (1 строка на клиента). Я оцениваю, какие клиенты будут более заинтересованы в конкретном продукте c. У меня есть список 10 самых коррелированных продуктов. (и у меня есть это для нескольких продуктов, поэтому я пытаюсь построить масштабируемый подход). Я пытаюсь оценить всех клиентов, основываясь на том, сколько из этих 10 продуктов они покупают.

Допустим, мой список: prod_x_corr_prod

Как создать столбец оценки (скажем, prox_x_propensity), который проходит через 10 соответствующих столбцов, для каждой строки и для каждого столбца со значением> 0 добавляет 1?

Например, если покупатель Y купил 3 продукта, связанных с продуктом X, он получит 3 балла в столбце "prox_x_score".

РЕДАКТИРОВАТЬ: благодаря всех вас за обратную связь.

Для клиента 5 я бы получил 2, в то время как для 1,2,3 я получил бы 1. Для 4, 0.

1 Ответ

0 голосов
/ 27 февраля 2020

Вы можете сделать: 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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...