如何在熊猫中添加排序功能?

时间:2018-11-02 08:49:09

标签: python pandas sorting

我想获取列值的排序顺序,并将其作为新列a_order。 例如,值的顺序为0.5 < 2.5 < 3.6列中的a

因此,在列a_order中,0.5对应于02.5对应于1,而3.6对应于{{1} }。

2

Input:

import pandas as pd import numpy as np df = pd.DataFrame({'a':[0.5, 3.6, 2.5]})

Output:

a 0 0.5 1 3.6 2 2.5

Expected:

3 个答案:

答案 0 :(得分:4)

使用rank,减去1并转换为整数:

df['a_order'] = df['a'].rank(method='dense').sub(1).astype(int)
print (df)
     a  a_order
0  0.5        0
1  3.6        2
2  2.5        1

答案 1 :(得分:0)

为什么不只是:

df['a_order']=df.sort_values('a').index.tolist()

'a_order'列中将'a'分配为已排序数据帧的索引

答案 2 :(得分:0)

您可以使用np.ndarray.argsort

df['a_order'] = df['a'].values.argsort()

print(df)

     a  a_order
0  0.5        0
1  3.6        2
2  2.5        1