Часто вам может понадобиться получить номера строк в кадре данных pandas, которые содержат определенное значение. К счастью, это легко сделать с помощью функции .index.В этом руководстве показано несколько примеров использования этой функции на практике.
Пример 1. Получение номеров строк, соответствующих определенному значению
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
'assists': [5, 7, 7, 9, 12],
'team': ['Mavs', 'Mavs', 'Spurs', 'Celtics', 'Warriors']})
#view DataFrame
print(df)
points assists team
0 25 5 Mavs
1 12 7 Mavs
2 15 7 Spurs
3 14 9 Celtics
4 19 12 Warriors
Мы можем использовать следующий синтаксис, чтобы получить номера строк, где «команда» равна Mavs:
#get row numbers where 'team' is equal to Mavs
df[df['team'] == 'Mavs']. index
Int64Index([0, 1], dtype='int64')
Мы видим, что имя команды равно 'Mavs' в строках с индексами 0 и 1 .
Мы также можем получить номера строк, в которых имя команды находится в определенном списке имен команд:
#get row numbers where 'team' is equal to Mavs or Spurs
filter_list = ['Mavs', 'Spurs']
#return only rows where team is in the list of team names
df[df.team.isin (filter_list)]. index
Int64Index([0, 1, 2], dtype='int64')
Мы видим, что название команды равно «Mavs» или «Spurs» в индексах строк 0 , 1 и 2 .
Пример 2: получение номера одной строки
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
'assists': [5, 7, 7, 9, 12],
'team': ['Mavs', 'Mavs', 'Spurs', 'Celtics', 'Warriors']})
Если вы знаете, что только одна строка соответствует определенному значению, вы можете получить номер этой единственной строки, используя следующий синтаксис:
#get the row number where team is equal to Celtics
df[df['team'] == 'Celtics']. index [ 0 ]
3
Мы видим, что команда равна «Селтикс» в строке с номером 3 .
Пример 3: Получить сумму номеров строк
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'points': [25, 12, 15, 14, 19],
'assists': [5, 7, 7, 9, 12],
'team': ['Mavs', 'Mavs', 'Spurs', 'Celtics', 'Warriors']})
Если вы хотите узнать общее количество строк, в которых столбец равен определенному значению, вы можете использовать следующий синтаксис:
#find total number of rows where team is equal to Mavs
len(df[df['team'] == 'Celtics']. index )
2
Мы видим, что команда равна «Mavs» всего в 2 строках.
Дополнительные ресурсы
Как найти уникальные значения в нескольких столбцах в Pandas
Как фильтровать кадр данных Pandas по нескольким условиям
Как подсчитать пропущенные значения в Pandas DataFrame