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
添加回答
舉報