2 回答

TA贡献1836条经验 获得超3个赞
这是我的想法。但我认为你的分数没有在你的问题中体现出来。
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
由于缺少比例,与您的输出不匹配。

TA贡献1802条经验 获得超4个赞
不确定您想要实现什么,也许您可以为此输入提供确切的预期输出。但如果我理解得很好,也许你可以试试
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
添加回答
举报