Проблема сортировки с несколькими столбцами Python PandasPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема сортировки с несколькими столбцами Python Pandas

Сообщение Anonymous »

Я хочу сортировать первый столбец в соответствии с внутренним алгоритмом, а затем сортируйте второй столбец в соответствии с методом пользовательской сортировки
Тестовые данные следующие:
A B
Ankang Shaanxi Ankang Southeast
Baoding Anguo Baoding Anguo Northeast
Baoding Anguo Baoding Anguo Southeast
Changsha Hunan Changsha Hunan Bright
Ankang Shaanxi Ankang Northeast
Baoding Anguo Baoding Anguo Southwest
Baoding Anguo Baoding Anguo Upper
Ankang Shaanxi Ankang Southwest
Luoyang Henan Luoyang Henan Upper
Baoding Anguo Baoding Anguo Northwest
Changsha Hunan Changsha Hunan Lower
Ankang Shaanxi Ankang Southwest Upper
Ankang Shaanxi Ankang Northwest
< /code>
Я надеюсь, что смогу организовать его, как показано ниже < /p>
Первый столбец сортируется вместе с помощью встроенного алгоритма сортировки строк Pandas, и и Затем второй столбец сортируется с использованием алгоритма пользовательского порядка северо -востока, юго -востока, северо -запада, юго -запада, верхнего. сортировка У меня не было проблем сортировкой одного столбца, но он всегда терпел неудачу, когда я пытался сортировать два столбца вместе.import pandas as pd

data={'A':['Ankang Shaanxi','Baoding Anguo','Baoding Anguo','Changsha Hunan','Ankang Shaanxi',
'Baoding Anguo','Baoding Anguo','Ankang Shaanxi','Luoyang Henan','Baoding Anguo',
'Changsha Hunan','Ankang Shaanxi','Ankang Shaanxi'],
'B':['Ankang Southeast','Baoding Anguo Northeast','Baoding Anguo Southeast','Changsha Hunan Bright','Ankang Northeast','Baoding Anguo Southwest','Baoding Anguo Upper','Ankang Southwest','Luoyang Henan Upper','Baoding Anguo Northwest','Changsha Hunan Lower','Ankang Southwest Upper','Ankang Northwest']}

df=pd.DataFrame(data)
def sort_fun(x):

return x.split()[-1]

df['sort_value']=df['B'].apply(sort_fun)

sort_dicts={'Northeast':0,'Southeast':1,'Northwest':2,'Southwest':3,'Upper':4}

df.sort_values(by=['A','sort_value'],key=lambda x :x.map(sort_dicts))
< /code>
Я ссылался на это панды: как настраивать на несколько столбцов? A B
Ankang Shaanxi Ankang Northeast
Ankang Shaanxi Ankang Southeast
Ankang Shaanxi Ankang Northwest
Ankang Shaanxi Ankang Southwest
Ankang Shaanxi Ankang Southwest Upper
Baoding Anguo Baoding Anguo Northeast
Baoding Anguo Baoding Anguo Southeast
Baoding Anguo Baoding Anguo Northwest
Baoding Anguo Baoding Anguo Southwest
Baoding Anguo Baoding Anguo Upper
Changsha Hunan Changsha Hunan Bright
Changsha Hunan Changsha Hunan Lower
Luoyang Henan Luoyang Henan Upper


Подробнее здесь: https://stackoverflow.com/questions/794 ... ng-problem
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»