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


Часто вам может понадобиться выбрать столбцы кадра данных pandas на основе их значения индекса.

Если вы хотите выбрать столбцы на основе целочисленного индексирования, вы можете использовать функцию .iloc .

Если вы хотите выбрать столбцы на основе индексации меток, вы можете использовать функцию .loc .

В этом руководстве представлен пример использования каждой из этих функций на практике.

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

В следующем коде показано, как создать кадр данных pandas и использовать .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 и использовать .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

Связанный: Pandas loc против iloc: в чем разница?

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.