import pandas as pd
rank = [4, 16, 1, 10, 25, 15, 2, 3, 13]
score = [8.93, 4.64, 10, 6.79, 1.43, 5, 9.64, 9.29, 5.71]
df = pd.DataFrame(list(zip(rank, score)), columns=['排名', '得分'])
df.sort_values(by='排名', inplace=True)
df['得分差'] = df['得分'].diff()
df['排名差'] = df['排名'].diff()
df['得分差/排名差'] = df['得分'].diff() / df['排名'].diff()
df
# 学科n个人参与排名,排名第1得满分(10分),排名倒数第1得10/n分,排第m名得10 - (m-1)*10/n分
# 10/0.36 = 27.777 ≈ 28,即心血管内科有28个专家参与排名。| 排名 | 得分 | 得分差 | 排名差 | 得分差/排名差 | |
|---|---|---|---|---|---|
| 2 | 1 | 10.00 | NaN | NaN | NaN |
| 6 | 2 | 9.64 | -0.36 | 1.0 | -0.360000 |
| 7 | 3 | 9.29 | -0.35 | 1.0 | -0.350000 |
| 0 | 4 | 8.93 | -0.36 | 1.0 | -0.360000 |
| 3 | 10 | 6.79 | -2.14 | 6.0 | -0.356667 |
| 8 | 13 | 5.71 | -1.08 | 3.0 | -0.360000 |
| 5 | 15 | 5.00 | -0.71 | 2.0 | -0.355000 |
| 1 | 16 | 4.64 | -0.36 | 1.0 | -0.360000 |
| 4 | 25 | 1.43 | -3.21 | 9.0 | -0.356667 |