Панды сортируют несколько столбцов независимо - PullRequest
0 голосов
/ 18 февраля 2019

Я изо всех сил пытался отсортировать все столбцы моего df, однако, мой код, кажется, работает только для первого столбца («Имя») и перетасовывает остальные столбцы, основываясь на первом столбце, как показано здесь:

Index Name Age Education Country 
0    W    2    BS         C
1    V    1    PhD        F 
2    R    9    MA         A
3    A    8    MA         A
4    D    7    PhD        B
5    C    4    BS         C

df.sort_values(by=['Name', 'Age', 'Education', 'Country'],ascending=[True,True, True, True])

Вот что я надеюсь получить:

Index Name Age Education Country 
0     A    1    BS         A
1     C    2    BS         A 
2     D    4    MA         B
3     R    7    MA         C
4     V    8    PhD        C
5     W    9    PhD        F

Вместо этого я получаю следующее:

Index Name Age Education Country 
3     A    8    MA         A
5     C    4    BS         C
4     D    7    PhD        B
2     R    9    MA         A
1     V    1    PhD        F 
0     W    2    BS         C

Не могли бы вы пролить свет на этот вопрос.Спасибо заранее.Cheers, R.

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Вы можете использовать np.sort вдоль оси 0 th :

df[:] = np.sort(df.values, axis=0)
df

   Index Name  Age Education Country
0      0    A    1        BS       A
1      1    C    2        BS       A
2      2    D    4        MA       B
3      3    R    7        MA       C
4      4    V    8       PhD       C
5      5    W    9       PhD       F

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

0 голосов
/ 18 февраля 2019

Ваш код сортируется по имени, затем по возрасту, затем по стране и т. Д.

Чтобы получить то, что вы хотите, вы можете выполнить сортировку по каждому столбцу , чтобы отсортировать столбец по столбцу.Например,

for col in df.columns:
    df[col]=sorted(df[col])

Но вы уверены, что это то, что вы хотите сделать?DataFrame разработан таким образом, чтобы каждая строка соответствовала одной записи, например, человеку, а столбцы соответствовали таким атрибутам, как «имя» и «возраст» и т. Д. Таким образом, вы не хотите сортировать имя и возраст отдельно, чтобы людиимя и возраст не совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...