数据帧在一列中按升序排列,在另一列中按降序排列



我已经知道如何排序数据帧与多列,但只有当他们都降序或升序,但我正在寻找排序数据帧在升序,然后如果有一个使用降序排序的第二列的平局。

这就是我要找的:

<表类> #的 %机会 等级 tbody><<tr>150221003195137552604
col1=df1.sort_values(df1.columns.tolist(),ascending=[True,False]).assign(col1=range(1,df1.pipe(len)+1)).col1
df1.assign(rank=col1)

输出:

ofhits  chance  rank
0       1      50     2
1       2     100     3
2       1      95     1
3       3      75     5
4       2      60     4

您可以在自定义订单中使用sort_values,然后使用numpy.argsort:

df['Rank'] = np.argsort(df.reset_index(drop=True) # optional
.sort_values(by=['# of hits', '% chance'],
ascending=[True, False])
.index)+1

NB。reset_index是可选的,只有在索引还没有排序时才需要。

输出:

# of hits  % chance  Rank
0          1        50     2
1          2       100     3
2          1        95     1
3          3        75     5
4          2        60     4

可再生的输入:

df = pd.DataFrame({'# of hits': [1, 2, 1, 3, 2],
'% chance': [50, 100, 95, 75, 60]})

您也可以使用rank(method='first)

df['Rank'] = df.sort_values('% chance',ascending=False)['# of hits'].rank(method = 'first').astype(int)

输出:

# of hits  % chance  Rank
0          1        50     2
1          2       100     3
2          1        95     1
3          3        75     5
4          2        60     4

相关内容

  • 没有找到相关文章

最新更新