Как одновременно сортировать столбцы в панде
Предположим, что я хочу отсортировать фрейм данных в Pandas, и мой фрейм данных выглядит следующим образом
First Name Last Name Street Address Type
0 Joe Smith 123 Main St. Property Address
1 Gregory Stanton 124 Main St. X Old Property Address
2 Phill Allen 38 Maple St. Alternate Address
3 Joe Smith PO Box 3165 Alternate Address
4 Xi Dong 183 Main St. Property Address
5 Phill Allen 128 Main St. Property Address
Я хочу сначала отсортировать фрейм данных по фамилии, чтобы он выглядел так:
First Name Last Name Street Address Type
0 Phill Allen 38 Maple St. Alternate Address
1 Phill Allen 128 Main St. Property Address
2 Xi Dong 183 Main St. Property Address
3 Joe Smith 123 Main St. Property Address
4 Joe Smith PO Box 3165 Alternate Address
5 Gregory Stanton 124 Main St. X Old Property Address
Теперь для каждого человека я хочу, чтобы адрес свойства был перед альтернативным адресом (если у человека есть и свойство, и альтернативный адрес), чтобы кадр данных выглядел так:
First Name Last Name Street Address Type
0 Phill Allen 128 Main St Property Address
1 Phill Allen 38 Maple St. Alternate Address
2 Xi Dong 183 Main St. Property Address
3 Joe Smith 123 Main St. Property Address
4 Joe Smith PO Box 3165 Alternate Address
5 Gregory Stanton 124 Main St. X Old Property Address
Обратите внимание, что записи Филла Аллена были переключены в вышеупомянутом фрейме данных, потому что его альтернативный адрес предшествовал адресу его свойства. Мой код выглядит так:
duplicates = df[df.duplicated(['Last Name'], keep=False)]
duplicates = duplicates.sort_values(['Last Name'], ascending = True)
duplicates = duplicates.sort_values(['Address Type'], ascending = True)
Я уже пытался использовать
duplicates = df.sort_values(['last', 'Address Type'], ascending = True)
Это не работает, потому что тип адреса может быть множеством разных вещей, а не просто первичным / альтернативным, и этот код не всегда будет работать при сортировке в порядке возрастания / убывания.
Но он не переключает адрес свойства и альтернативный адрес в правильном порядке, потому что python сначала сортирует фрейм данных по Фамилии, а затем перекомпилирует его в соответствии с типом адреса. Я ищу код, который будет сортировать по фамилии и на основе этих фамилий, а затем сортировать по типу адреса. Любая помощь будет оценена. Спасибо!
1 ответ
Вы можете сортировать по нескольким столбцам. Просто поместите обе колонки в список.
duplicates = duplicates.sort_values(['Last Name', 'Address Type'], ascending = True)