Python中的逆分数

时间:2018-12-01 12:23:25

标签: python pandas

我有一个如下数据框,

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 :(得分:2)

不确定要实现的目标,也许可以为此输入提供准确的预期输出。 但是,如果我理解得很好,也许您可​​以尝试

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

答案 1 :(得分:1)

这是我的主意。但我认为您的分数有一个量表,而这个量表在您的问题中缺失。

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

由于缺少比例尺,因此与您的输出不匹配。