Как выбрать столбцы по индексу в Pandas

Может понадобиться выбрать столбцы DataFrame на основе индекса.

Если нужно выбрать столбцы на основе целочисленной индексации — необходима функция .iloc.

Если нужно выбрать столбцы на основе индексации по меткам — .loc.

Пример 1: Выбор столбцов на основе целочисленной индексации

Следующий код показывает, как создать pandas DataFrame и использовать .iloc для выбора столбца с целочисленным индексом, равным 3:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'B'],
                   'points': [11, 7, 8, 10, 13, 13],
                   'assists': [5, 7, 7, 9, 12, 9],
                   'rebounds': [11, 8, 10, 6, 6, 5]})

#view DataFrame
df

	team	points	assists	rebounds
0	A	11	5	11
1	A	7	7	8
2	A	8	7	10
3	B	10	9	6
4	B	13	12	6
5	B	13	9	5

#select column with index position 3
df.iloc[:, 3]
0    11
1     8
2    10
3     6
4     6
5     5
Name: rebounds, dtype: int64

Вот такой синтакс для выбора нескольких столбцов:

#select columns with index positions 1 and 3
df.iloc[:, [1, 3]]
        points	rebounds
0	11	11
1	7	8
2	8	10
3	10	6
4	13	6
5	13	5

Или можно выбрать все столбцы в диапазоне:

#select columns with index positions in range 0 through 3
df.iloc[:, 0:3]
        team	points	assists
0	A	11	5
1	A	7	7
2	A	8	7
3	B	10	9
4	B	13	12
5	B	13	9

Пример 2: Выбор столбцов на основе индексации меток

Следующий код показывает, как создать pandas DataFrame и использовать .loc для выбора столбца с индексной меткой 'rebounds':

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'B'],
                   'points': [11, 7, 8, 10, 13, 13],
                   'assists': [5, 7, 7, 9, 12, 9],
                   'rebounds': [11, 8, 10, 6, 6, 5]})

#view DataFrame
df

	team	points	assists	rebounds
0	A	11	5	11
1	A	7	7	8
2	A	8	7	10
3	B	10	9	6
4	B	13	12	6
5	B	13	9	5

#select column with index label 'rebounds'
df.loc[:, 'rebounds']
0    11
1     8
2    10
3     6
4     6
5     5
Name: rebounds, dtype: int64

Также можно использовать аналогичный синтаксис для выбора нескольких столбцов с разными индексными метками:

#select the columns with index labels 'points' and 'rebounds'
df.loc[:, ['points', 'rebounds']]
	points	rebounds
0	11	11
1	7	8
2	8	10
3	10	6
4	13	6
5	13	5

Или можно выбрать все столбцы в диапазоне:

#select columns with index labels between 'team' and 'assists'
df.loc[:, 'team':'assists']
	team	points	assists
0	A	11	5
1	A	7	7
2	A	8	7
3	B	10	9
4	B	13	12
5	B	13	9

Источник: https://www.statology.org/pandas-select-column-by-index/