Как упорядочить фрейм данных на основе подстрок в столбце?Python

Программы на Python
Ответить
Anonymous
 Как упорядочить фрейм данных на основе подстрок в столбце?

Сообщение Anonymous »

У меня есть фрейм данных со строковыми строками. Я хочу отсортировать весь фрейм данных на основе строк в этом столбце. Однако есть некоторые строки, которые содержат подстроку, которая является текстом в другой строке, поэтому порядок нарушается. Мой фрейм данных выглядит так:

Код: Выделить всё

  col1           col2        col3       col4
Animal           Tiger       Cat         Dog
Name             Adam       Grace       Julia
Street Name1    Pine St    Crown St    Palm Ave
Street Name2    Grey St    Tree St     New St
Color           Green        Blue       Yellow
Interest         Yes         No           Yes
Low Interest     No          No           Yes
High Interest    Yes         No           Yes
City2             x          z             y
City1             m          r             t
Я хочу отсортировать его так:

Код: Выделить всё

  col1           col2        col3       col4
Name             Adam       Grace       Julia
Street Name1    Pine St    Crown St    Palm Ave
Street Name2    Grey St    Tree St     New St
City1             m          r             t
City2             x          z             y
Interest         Yes         No           Yes
High Interest    Yes         No           Yes
Low Interest     No          No           Yes
Animal           Tiger       Cat         Dog
Color           Green        Blue       Yellow
Я пробовал использовать:

Код: Выделить всё

order = ['Name', 'Street Name', 'City', 'Interest','High Interest','Low Interest', 'Animal', 'Color']
df['order'] = df['col1'].apply(order)
df = df.sort_values(by = 'order').drop(columns = 'order')
Однако это создавало проблему, из-за которой строки «Название улицы» располагались перед «Имя», поскольку «Имя» находится в обеих строках. Нравится:

Код: Выделить всё

     col1           col2        col3       col4
Street Name1    Pine St    Crown St    Palm Ave
Street Name2    Grey St    Tree St     New St
Name             Adam       Grace       Julia
Как я могу упорядочить этот фрейм данных, чтобы он находился в правильном порядке, даже если он содержит подстроку для другой строки?
ОБНОВЛЕНИЕ:Я не могу явно указать «Название улицы1», «Название улицы2», поскольку номер в конце может измениться. Для разных сценариев это также может быть «Название улицы1», «Название улицы2».... «Название улицы7». Поэтому я не могу точно определить цифры.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-column
Ответить

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

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

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

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

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