Pandas: как фильтровать по значению индекса


Вы можете использовать следующий базовый синтаксис для фильтрации строк кадра данных pandas на основе значений индекса:

df_filtered = df[df.index.isin (some_list)]

Это отфильтрует DataFrame pandas, чтобы включить только строки, значения индекса которых содержатся в some_list .

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: фильтрация по значениям числового индекса

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [18, 22, 19, 14, 14, 11, 20, 28],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print(df)

 points assists rebounds
0 18 5 11
1 22 7 8
2 19 7 10
3 14 9 6
4 14 12 6
5 11 9 5
6 20 9 9
7 28 4 12

Обратите внимание, что значения индекса являются числовыми.

Предположим, мы хотим отфильтровать строки, где значение индекса равно 1, 5, 6 или 7.

Для этого мы можем использовать следующий синтаксис:

#define list of index values
some_list = [1, 5, 6, 7]

#filter for rows in list
df_filtered = df[df.index.isin (some_list)]

#view filtered DataFrame
print(df_filtered)

 points assists rebounds
1 22 7 8
5 11 9 5
6 20 9 9
7 28 4 12

Обратите внимание, что возвращаются только те строки, значение индекса которых равно 1, 5, 6 или 7.

Пример 2. Фильтрация по нечисловым значениям индекса

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [18, 22, 19, 14, 14, 11, 20, 28],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]},
 index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

#view DataFrame
print(df)

 points assists rebounds
A 18 5 11
B 22 7 8
C 19 7 10
D 14 9 6
E 14 12 6
F 11 9 5
G 20 9 9
H 28 4 12

Обратите внимание, что значения индекса являются символьными значениями.

Предположим, мы хотим отфильтровать строки, где значение индекса равно A, C, F или G.

Для этого мы можем использовать следующий синтаксис:

#define list of index values
some_list = ['A', 'C', 'F', 'G']

#filter for rows in list
df_filtered = df[df.index.isin (some_list)]

#view filtered DataFrame
print(df_filtered)

 points assists rebounds
A 18 5 11
C 19 7 10
F 11 9 5
G 20 9 9

Обратите внимание, что возвращаются только те строки, значение индекса которых равно A, C, F или G.

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

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

Как вставить строку в фрейм данных Pandas
Как удалить первую строку в Pandas DataFrame
Как удалить строки в Pandas DataFrame на основе условия

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