Как сравнить каждое значение с максимальным значением для проекта в одном столбце в Pandas - PullRequest
0 голосов
/ 16 октября 2018

Я хотел бы рассчитать максимальный балл - каждый балл для проекта в пандах. Dataframe

текущий df выглядит так:

projectID supplierID score
1         1          50
1         2          60 
1         3          75

Я хочу, чтобы он выглядел какэто:

projectID supplierID score diff_to_max
1         1          50    25
1         2          60    15
1         3          75    0

и я хочу сделать это действие для каждого projectID

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Не прямой, но быстрый / крутой способ с использованием Numpy

i, r = pd.factorize(df.projectID)
score = df.score.values
out = np.empty(len(r), score.dtype)
out.fill(score.min() - 1)

np.maximum.at(out, i, score)

df.assign(diff_to_max=out[i] - score)

   projectID  supplierID  score  diff_to_max
0          1           1     50           25
1          1           2     60           15
2          1           3     75            0
0 голосов
/ 16 октября 2018

Вещание с transform и вычитание

df.groupby('projectID').score.transform('max') - df.score
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...