Вы можете использовать следующий синтаксис, чтобы получить индекс строк в pandas DataFrame, столбец которого соответствует определенным значениям:
df.index [df['column_name']== value ]. tolist ()
В следующих примерах показано, как использовать этот синтаксис на практике со следующими пандами DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'team': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'],
'points': [5, 7, 7, 9, 12, 9, 9, 4],
'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
df
team points rebounds
0 A 5 11
1 A 7 8
2 A 7 10
3 B 9 6
4 B 12 6
5 C 9 5
6 C 9 9
7 D 4 12
Пример 1. Получение индекса строк, столбец которых соответствует значению
В следующем коде показано, как получить индекс строк, в которых один столбец равен определенному значению:
#get index of rows where 'points' column is equal to 7
df.index [df['points']== 7 ]. tolist ()
[1, 2]
Это говорит нам о том, что строки со значениями индекса 1 и 2 имеют значение «7» в столбце точек.
Обратите внимание, что мы также можем использовать операторы «меньше» и «больше», чтобы найти индекс строк, в которых один столбец меньше или больше определенного значения:
#get index of rows where 'points' column is greater than 7
df.index [df['points']> 7 ]. tolist ()
[3, 4, 5, 6]
Это говорит нам о том, что строки со значениями индекса 3 , 4 , 5 и 6 имеют значение больше 7 в столбце точек.
Пример 2. Получение индекса строк, столбец которых соответствует строке
В следующем коде показано, как получить индекс строк, в которых один столбец равен определенной строке:
#get index of rows where 'team' column is equal to 'B'
df.index [df['team']=='B']. tolist ()
[3, 4]
Это говорит нам о том, что строки со значениями индекса 3 и 4 имеют значение «B» в столбце команды.
Пример 3. Получение индекса строк с несколькими условиями
В следующем коде показано, как получить индекс строк, в которых значения в нескольких столбцах соответствуют определенным условиям:
#get index of rows where 'points' is equal to 7 *or* 12
df.index [(df['points']== 7 ) |(df['points']== 12 )]. tolist ()
[1, 2, 4]
#get index of rows where 'points' is equal to 9 *and* 'team' is equal to 'B'
df.index [(df['points']== 9 ) &(df['team']=='B')]. tolist ()
[3]
Дополнительные ресурсы
Как получить значение ячейки из Pandas DataFrame
Как переименовать индекс в Pandas DataFrame
Как сортировать столбцы по имени в Pandas