Как выбрать столбцы по индексу в 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/