Как выбрать колонки в DataFrame по списку?
Нужно по списку выбрать определенные колонки в DataFrame.
Cписок c колонками:
lst = ['JOHN', 'GARRY']
DataFrame:
df = pd.DataFrame({'JOHN': [1111, 2222, 3333], 'EMMA': [1234, 6666, None], 'GARRY': [5555, 5678, 7777]})
Я знаю как выбрать указав конкретные колонки, но как сделать из списка, не могу сообразить:
df = df[['JOHN', 'GARRY']]
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Вариант 1: наиболее идиоматический:
In [144]: df.loc[:, lst]
Out[144]:
JOHN GARRY
0 1111 5555
1 2222 5678
2 3333 7777
Вариант 2:
In [145]: df[lst]
Out[145]:
JOHN GARRY
0 1111 5555
1 2222 5678
2 3333 7777
Вариант 3: можно использовать если в списке столбцов есть такие, которые не встречаются в DataFrame - это позволит обойти ошибку KeyError:
In [146]: df.filter(lst + ['N/A'])
Out[146]:
JOHN GARRY
0 1111 5555
1 2222 5678
2 3333 7777
Вариант 4: можно использовать если в списке столбцов есть такие, которые не встречаются в DataFrame - это позволит обойти ошибку KeyError:
In [148]: df.loc[:, df.columns.intersection(['AAA', 'JOHN', 'GARRY'])]
Out[148]:
JOHN GARRY
0 1111 5555
1 2222 5678
2 3333 7777
NOTE: варианты 3 и 4 позволяют использовать списки, содержащие несуществующие столбцы (см. вариант 4 для примера).