Как добавить функцию сортировки в пандах? - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу получить порядок сортировки значений столбцов и как новый столбец a_order. Например, порядок значений 0.5 < 2.5 < 3.6 в столбце a.

Таким образом, в столбце a_order, 0.5 соответствует 0, 2.5 соответствует 1, а 3.6 соответствует 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:

     a  a_order
0  0.5        0
1  3.6        2
2  2.5        1

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Почему бы просто:

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

Назначить 'a_order' в качестве индекса отсортированного фрейма данных по столбцу 'a'

.
0 голосов
/ 02 ноября 2018

Вы можете использовать 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
0 голосов
/ 02 ноября 2018

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...