Как отсортировать столбцы независимо друг от друга?

import pandas as pd

df = pd.read_excel('random.xlsx')
df.sort_values(['Name','Birthday','City of birth','Favorite color of the rainbow', 'Favorite subject at school'], ascending = [True])
df

Проблема в том, что сортирует только первый столбец, а надо чтобы все.

Ексель файл

Добавил фотку таблицы. Надо чтобы каждый столбец сортировался отдельно.
К примеру, столбец с именами сортировался по алфавиту, столбец 2 по дате, столбец 3 по алфавиту, столбец 4 и 5 также по алфавиту.


Ответы (1 шт):

Автор решения: MaxU

Рабочий пример:

In [124]: np.random.seed(42)

In [125]: df = pd.DataFrame(np.random.randint(20, size=(5, 3)), columns=list("abc"))

In [126]: df
Out[126]:
    a   b   c
0   6  19  14
1  10   7   6
2  18  10  10
3   3   7   2
4   1  11   5

In [127]: res = pd.DataFrame(np.sort(df, axis=0), columns=df.columns)

In [128]: res
Out[128]:
    a   b   c
0   1   7   2
1   3   7   5
2   6  10   6
3  10  11  10
4  18  19  14

NOTE: учтите, при такой сортировке у вас разрываются связи в строках, т.е. все столбцы будут отсортированы независимо друг от друга. То что до сортировки принадлежало одной строке, после сортировки может быть разбросано по разным строкам. Только так можно реализовать то, что вы описали в вопросе.

→ Ссылка