亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 中的逆分數

Python 中的逆分數

精慕HU 2021-09-02 19:42:10
我有一個如下的數據框,import pandas as pddf = 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 回答

?
米脂

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

由于缺少比例,與您的輸出不匹配。


查看完整回答
反對 回復 2021-09-02
?
慕虎7371278

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


查看完整回答
反對 回復 2021-09-02
  • 2 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號