Сортировка значений нескольких текстовых столбцов в панде - PullRequest
1 голос
/ 18 октября 2019

У меня есть такой фрейм данных для панд:

         A       B       C   D     E
0   apple  banana  orange   5  0.09
1  orange   apple  banana  10   4.0
2  banana  orange   apple  15   1.9
3  banana   apple  banana  20   2.8

Я хочу отсортировать значения каждой строки только на основе столбцов A, B, C следующим образом:

0   apple  banana  orange   5  0.09
1  apple   banana  orange  10   4.0
2  apple   banana   orange  15   1.9
3  apple   banana  banana  20   2.8

IЯ пробовал такое решение, как df['F']=(df.A+df.B+df.C).map(set).map(list), чтобы я мог создать новый столбец F, а затем заменить A, B, C значением разделенного списка F, но он объединяет все буквы моих строк и создает набор изто, что бесполезно, так:

 A       B       C   D     E                            F
0   apple  banana  orange   5  0.09  [b, g, r, l, n, a, p, e, o]
1  orange   apple  banana  10   4.0  [b, g, r, l, n, a, p, e, o]
2  banana  orange   apple  15   1.9  [b, g, r, l, n, a, p, e, o]
3  banana   apple  banana  20   2.8           [b, l, n, a, p, e]

1 Ответ

2 голосов
/ 18 октября 2019

Попробуйте:

df[['A','B','C']] = np.sort(df[['A','B','C']].to_numpy(), axis=1)

или

df[['A','B','C']] = [sorted(i) for i in df[['A','B','C']].to_numpy()]

Вывод:

       A       B       C   D     E
0  apple  banana  orange   5  0.09
3  apple  banana  banana  20  2.80
2  apple  banana  orange  15  1.90
1  apple  banana  orange  10  4.00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...