Упорядочить столбцы DataFrame по нескольким регулярным выражениям - PullRequest
1 голос
/ 05 июля 2019

Я хочу заказать DataFrame по нескольким регулярным выражениям.То есть, например, в этом DataFrame

df = pd.DataFrame({'Col1': [20, 30],
                    'Col2': [50, 60],
                    'Pol2': [50, 60]})

получить столбцы, начинающиеся с P, а не те, которые начинаются с C.

Я обнаружил, что вы можете фильтровать с помощью одного регулярного выражения, например

df.filter(regex = "P*")

но я не могу сделать это с большим количеством уровней.

ОБНОВЛЕНИЕ: Я хочу сделать это в одной инструкции, я уже могу использоватьсписок регулярных выражений и объединение столбцов в другом DataFrame.

Ответы [ 2 ]

3 голосов
/ 05 июля 2019

Я считаю, что вам нужен список DataFrames, отфильтрованных по регулярным выражениям в списке с concat:

reg = ['^P','^C']
df1 = pd.concat([df.filter(regex = r) for r in reg], axis=1)
print (df1)
   Pol2  Col1  Col2
0    50    20    50
1    60    30    60
0 голосов
/ 05 июля 2019

Вы можете просто изменить порядок столбцов путем регулярного назначения.

экспорт столбцов в отсортированный список и индексирование по нему.

попробовать:

import pandas as pd

df = pd.DataFrame({'Col1': [20, 30],
                   'Pol2': [50, 60],
                    'Col2': [50, 60],
                    })

df = df[sorted(df.columns.to_list(), key=lambda col: col.startswith("P"), reverse=True)]

print(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...