Pandas: Получение номера строки из DataFrame

В этом руководстве вы узнаете, как использовать Pandas для получения номера строки (или, точнее, номера индекса) конкретной строки или строк в датафрейме. Часто возникает необходимость определить номер строки определенного значения, и, к счастью, Pandas делает это довольно просто с помощью функции.

Фактически, это возвращает позиции .index строк, а не номер строки, как в Excel. Поскольку индекс не совсем представляет номер строки, это также не совсем так. Тем не менее, Pandas не предоставляет истинного номера строки, поэтому индекс является ближайшим соответствием этому.

К концу этого учебного курса

  • Как получить номер(а) строки(ей) для строк, соответствующих условию

  • Как получить только один номер строки

  • Как подсчитать количество строк, соответствующих определенному условию

Быстрый ответ: используйте .index для получения номера строки Pandas

# Получение номеров строк, удовлетворяющих условию в DataFrame Pandas

import pandas as pd

row_numbers = df[df['Gender'] == 'Male'].index

print(row_numbers)

# Возвращает:
# Int64Index([3, 4, 6], dtype='int64')

Оглавление

Загрузка образца Pandas Dataframe

Чтобы следовать этому учебнику, я предоставил пример DataFrame в Pandas. Если вы хотите следовать за уроком шаг за шагом, не стесняйтесь копировать код ниже. DataFrame специально сделан небольшим, чтобы его было легче воспринимать.

# Загрузка образец DataFrame Pandas

import pandas as pd

df = pd.DataFrame.from_dict(
    {
        'Name': ['Joan', 'Devi', 'Melissa', 'Dave', 'Nik', 'Kate', 'Evan'],
        'Age': [19, 43, 27, 32, 28, 29, 42],
        'Gender': ['Female', 'Female', 'Female', 'Male', 'Male', 'Female', 'Male'],
        'Education': ['High School', 'College', 'PhD', 'High School', 'College', 'College', 'College'],
        'City': ['Atlanta', 'Toronto', 'New York City', 'Madrid', 'Montreal', 'Vancouver', 'Paris']
    }
)

print(df)

# Возвращает:
#       Name  Age  Gender    Education           City
# 0     Joan   19  Female  High School        Atlanta
# 1     Devi   43  Female      College        Toronto
# 2  Melissa   27  Female          PhD  New York City
# 3     Dave   32    Male  High School         Madrid
# 4      Nik   28    Male      College       Montreal
# 5     Kate   29  Female      College      Vancouver
# 6     Evan   42    Male      College          Paris

Видно, что при выводе на экран у нас есть датафрейм из шести строк и пяти столбцов. Наши столбцы содержат полностью уникальные переменные и другие, которые являются более категориальными.

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

Получить номера строк, соответствующие условию в Pandas Dataframe

В этом разделе вы узнаете, как использовать Pandas, чтобы получить номер строки или строк, которые соответствуют условию в dataframe.

Мы можем использовать условную фильтрацию в Pandas (которую я подробно разбираю ), чтобы отфильтровать наш датафрейм, а затем выбрать индекс или индексы этих строк. Давайте посмотрим, как мы можем получить номера строк для всех строк, содержащих "Male" в столбце.

# Получение номеров строк, удовлетворяющих условию в DataFrame Pandas

row_numbers = df[df['Gender'] == 'Male'].index

print(row_numbers)

# Возвращает:
# Int64Index([3, 4, 6], dtype='int64')

Здесь мы видим, что это возвращает три элемента: индексы строк, соответствующих условию.

Теперь посмотрим, как можно вернуть номера строк для строк, соответствующих нескольким условиям. Для этого мы можем использовать условную фильтрацию, передавая несколько условий. Давайте выберем строки, где условия соответствуют одновременно "женский пол" и "из Торонто

# Получение номеров строк, удовлетворяющих нескольким условиям в DataFrame Pandas

row_numbers = df[(df['Gender'] == 'Female') & (df['City'] == 'Toronto')].index

print(row_numbers)

# Возвращает:
# Int64Index([1], dtype='int64')

Мы можем увидеть, что смогли вернуть номера строк в Pandas Dataframe, соответствующие двум условиям.

В следующем разделе вы научитесь использовать Pandas для получения номера первой строки

Получить первый номер строки, соответствующий условию в Pandas Dataframe

Иногда вам может понадобиться получить только номер первой строки, которая соответствует определённому условию. Это может быть полезно, например, если вы знаете, что этому условию соответствует только одна строка.

Мы упомянули выше, что вернули объект Int64Index, который является объектом с возможностью индексирования. Благодаря этому, мы можем легко получить доступ к индексу номера строки. Давайте посмотрим, как:

# Получение номера строки первой строки, удовлетворяющей условию

row_numbers = df[df['Name'] == 'Kate'].index[0]
print(row_numbers)

# Возвращает: 5

Мы видим, что при индексировании объекта индекса мы возвращаем только один номер строки. Это позволяет нам получить доступ и использовать эту позицию индекса в различных операциях. Например, мы можем использовать номер строки для изменения содержимого в этой записи или извлечения его программно.

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

Подсчитайте количество строк, соответствующих условию

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

Когда мы использовали метод .index выше, мы заметили, что он вернул объект, похожий на список, содержащий номера наших строк. Благодаря этому, мы можем передать этот объект в функцию len(), чтобы подсчитать количество элементов в массиве.

Давайте посмотрим, как мы можем повторить приведённый выше пример и посчитать, сколько строк соответствуют этому условию, используя Pandas:

# Подсчет числа строк, удовлетворяющих условию

row_numbers = df[(df['Gender'] == 'Female') & (df['City'] == 'Toronto')].index
print(len(row_numbers))

# Возвращает: 1

Мы можем увидеть, что, передав объект индекса в функцию len(), мы можем подтвердить, что только один элемент соответствует нашему условию. Это позволяет нам проверить наличие дубликатов, основываясь на том, что мы можем считать уникальным ключом. В противном случае, это может позволить нам подтвердить, что достаточно строк соответствует заданному условию.

Заключение

В этом учебном пособии вы узнали, как использовать Pandas для получения номеров строк DataFrame, соответствующих заданному условию. Вы также узнали, как получить номера строк, которые соответствуют нескольким условиям. Наконец, вы научились использовать Pandas для подсчета количества строк, соответствующих заданному условию.

Чтобы узнать больше о методе Pandas .index, ознакомьтесь с официальной документацией здесь.

Last updated