Метод сортировки значений DataFrame - PullRequest
1 голос
/ 04 мая 2020

Я не понимаю этот код:

d = {'col1': [5, 6,4, 1, 2, 9, 15, 11]}


df = pd.DataFrame(data=d)
df.head(10)

df['col1'] = df.sort_values('col1')['col1']

print(df.sort_values('col1')['col1'])

Это то, что напечатано:

3     1
4     2
2     4
0     5
1     6
5     9
7    11
6    15

Мой df вообще не меняется. Почему этот код: df.sort_values('col1')['col1'] не устраивает мой фрейм данных? Спасибо

1 Ответ

3 голосов
/ 04 мая 2020

Если необходимо присвоить обратно отсортированный столбец, необходимо преобразовать вывод в массив numpy для предотвращения выравнивания индекса - это означает, что если используется только df.sort_values('col1')['col1'], то сортировка выполняется правильно, порядок индекса изменяется, но на шаге назначения происходит изменение порядка, аналогичного исходному, так что без изменений в порядке значений.

df['col1'] = df.sort_values('col1')['col1'].to_numpy()

Если индекс по умолчанию, другой идеей является создание индекса по умолчанию (аналогично оригиналу), поэтому выравнивание выравнивается по новым значениям индекса:

df['col1'] = df.sort_values('col1')['col1'].reset_index(drop=True)

Если хотите отсортировать по столбцу col1:

df = df.sort_values('col1')
...