Выберите несколько столбцов с помощью меток pandas

Я искал способы выбора столбцов через документацию python и форумы, но каждый пример индексации столбцов слишком упрощен.

Предположим, что у меня есть 10 x 10 фреймов данных

df = DataFrame(randn(10, 10), index=range(0,10), columns=['A', 'B', 'C', 'D','E','F','G','H','I','J'])

До сих пор все документы были просто простым примером индексации, например

subset = df.loc[:,'A':'C']

или

subset = df.loc[:,'C':]

Но я получаю сообщение об ошибке, когда я пытаюсь индексировать несколько непоследовательных столбцов, например

subset = df.loc[:,('A':'C', 'E')]

Как мне индексировать в Pandas, если я хотел бы выбрать столбцы A-C, E и G для I? Похоже, что эта логика не будет работать

subset = df.loc[:,('A':'C', 'E', 'G':'I')]

Я чувствую, что решение довольно простое, но я не могу обойти эту ошибку. Спасибо!

Ответы

Ответ 1

У вас есть как минимум пара вариантов.

Имя или Label-Based (с использованием синтаксиса регулярных выражений)

df.filter(regex='[A-CEG-I]')

Местоположение (зависит от порядка столбцов)

cols = list(df.loc[:,'A':'C']) + ['E'] + list(df.loc[:,'G':'I'])

df[cols]

Результаты в любом случае:

          A         B         C         E         G         H         I
0 -0.814688 -1.060864 -0.008088  2.697203 -0.763874  1.793213 -0.019520
1  0.549824  0.269340  0.405570 -0.406695 -0.536304 -1.231051  0.058018
2  0.879230 -0.666814  1.305835  0.167621 -1.100355  0.391133  0.317467