pandas dataframe - сохраняет ли фильтрация / выбор столбцов по строке порядок? - PullRequest
0 голосов
/ 28 мая 2020

У меня есть вариант использования, когда я говорю, что 10 столбцов, из которых 5 начинаются со строки «Регион». Мне нужно получить результирующий фрейм данных, который содержит только эти столбцы (начиная со строки «Регион»). Мало того, мне нужно убедиться, что порядок сохраняется (например, если в исходном df порядок цветов 'Region 1', 'Region 2', 'Region 3' - это должно быть сохранено, а не 'Region 3', 'Region 2', 'Region 1' вместо этого).

Будет после «принятого ответа» на этот вопрос сохранить порядок или есть какой-то другой метод для этого?

stackoverflow - find-column-which-name-contains-a-specifici c - строка

Ответы [ 3 ]

2 голосов
/ 28 мая 2020

Сначала используйте два шага filter

s=df.filter(like='Region')
2 голосов
/ 28 мая 2020

Да, будет. df.columns - это список, когда вы перебираете список, вы сохраняете порядок списка. Таким образом, вы можете использовать ответ по указанной ссылке:

region_cols = [col for col in df.columns if 'Region' in col]

df[region_cols] - это будет требуемый df.

1 голос
/ 28 мая 2020

если ваш фрейм данных похож на:

print(df)


   Region 3  Region 2  Region 1  Custom  UnwantedCol
0         0         0         0       0            0

, мы можем использовать метод sorted для сортировки столбцов по номеру:

nat_cols_sort = dict(sorted(
    {col: int(col.split(" ")[1]) for col in df.filter(regex='^Region').columns}.items(),
    key=lambda x: x[1],
))


print(df[nat_sort.keys()])

   Region 1  Region 2  Region 3
0         0         0         0
...