Обратный счет в Python - PullRequest
       3

Обратный счет в Python

0 голосов
/ 01 декабря 2018

У меня есть следующий фрейм данных,

import pandas as pd

df = pd.DataFrame({'value': [54, 74, 71, 78, 12]})

Ожидаемый результат,

value    score
 54    scaled value
 74    scaled value
 71    scaled value
 78     50.000
 12     600.00

Я хочу назначить всем оценки от 50 до 600, но самое низкое значение должно иметьвысокий баллУ вас есть идея?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Это моя идея.Но я думаю, что у вас есть шкала баллов, которая отсутствует в ваших вопросах.

dfmin   = df.min()[0]
dfmax   = df.max()[0]
dfrange = dfmax - dfmin
score_value = (600-50)/dfrange
df.loc[:,'score'] = np.where(df['value'] == dfmin, 600, 
                             np.where(df.value == dfmax, 
                                      50, 
                                      600 - ((df.value - dfmin)* (1/score_value))))
df

, который производит:

   value   score
0     54  594.96
1     74  592.56
2     71  592.92
3     78   50.00
4     12  600.00

Не соответствует вашему выводу из-за отсутствия шкалы.

0 голосов
/ 01 декабря 2018

Не уверен, что вы хотите достичь, возможно, вы могли бы предоставить точный ожидаемый результат для этого ввода.Но если я хорошо понимаю, может быть, вы могли бы попробовать

import pandas as pd

df = pd.DataFrame({'value': [54, 74, 71, 78, 12]})
min = pd.DataFrame.min(df).value
max = pd.DataFrame.max(df).value

step = 550 / (max - min)
df['score'] = 600 - (df['value']-min) * step

print(df)

Это выдаст

   value       score
0     54  250.000000
1     74   83.333333
2     71  108.333333
3     78   50.000000
4     12  600.000000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...