Как я могу сортировать числа в строке в пандах? - PullRequest
2 голосов
/ 08 мая 2019

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

id   String
1    345 -456 -13  879
2    158 -926 -81  249 35 -4 -53  9
3    945 -506 -103

Я хочу отсортировать его в порядке убывания, как это

id   String
1    879 345 -13 -457
2    249 158 35 9 -4 -53 -81 -926
3    945 -103 -506

Я пробовал это:

df['string'] = df['string'].str.split(' ').map(lambda x: ' '.join(sorted(x)))

Приведенная выше функция выполняет какую-то сортировку, но не так, как я хочу.

1 Ответ

4 голосов
/ 08 мая 2019

Сначала необходимо преобразовать значения в целые числа, отсортировать, а затем преобразовать в строки обратно:

f = lambda x: ' '.join(map(str, sorted(map(int, x), reverse=True)))
#another solution
#f = lambda x: ' '.join(str(z) for z in sorted((int(y) for y in x), reverse=True))
df['string'] = df['string'].str.split().map(f)
print (df)
   id                        string
0   1              879 345 -13 -456
1   2  249 158 35 9 -4 -53 -81 -926
2   3                 945 -103 -506

Или:

f = lambda x: ' '.join(map(str, sorted(map(int, x.split()), reverse=True)))
df['string'] = df['string'].map(f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...