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