• Автор записи:
  • Рубрика записи:Pandas
  • Время чтения:3 минут чтения
  • Комментарии к записи:0 комментариев

Чтобы получить индекс строки в Pandas, мы можем использовать логический метод индексации, метод loc и метод get_loc с объектом индекса.

Мы также можем использовать косвенные методы, которые помогут нам получить индекс строки в Pandas, например:

  1. iterrows;
  2. функция query();
  3. функция np.where().
Содержание

Используя логическое индексирование

Логическое индексирование в Pandas Python — это способ использования логического условия для фильтрации и выбора определенных строк в DataFrame.

Атрибут index DataFrame для поиска индекса строки в кадре данных Pandas с помощью функции tolist(), которая преобразует индекс результата в список.

Вот пример, который дает индекс строки в Python Pandas в соответствии с предоставленным условием.

import pandas as pd

employee_data = {'Name': ['Alice', 'Bob', 'Charlie', 'Bob'],
        'Age': [25, 30, 35, 45]}
df = pd.DataFrame(employee_data)

index_row = df.index[df['Name'] == 'Bob'].tolist()
print("Index of the row:", index_row)

Выход:

Index of the row: [1, 3]

После реализации кода в редакторе Python Pycharm я сделал снимок экрана ниже:

Используя логическое индексирование

С помощью метода index.get_loc()

.index.get_loc() в Python позволяет нам напрямую получить целочисленную позицию индексной метки.

Используя этот метод, мы можем найти индекс строки, используя значение, найденное в столбце «Имя».

Код:

import pandas as pd

cities_data = {'City': ['New York', 'Austin', 'Chicago', 'Houston', 'Phoenix'],
        'Population(millions)': [8.4, 3.9, 2.7, 2.3, 1.7],
        'State': ['New York', 'Texas', 'Illinois', 'Texas', 'Arizona']}
cities_df = pd.DataFrame(cities_data)

row_index = cities_df.index.get_loc(cities_df[cities_df['State'] == 'Texas'].index[0])
print("Index using Index of a Value is:", row_index)

Вывод: в этом коде мы сначала находим индексную метку строки со столбцом «Имя», значение которого «Штат» равно «Техас», а затем используем .index.get_loc(), чтобы получить ее целочисленное местоположение.

Index using Index of a Value is: 1

Скриншот упомянут ниже:

С помощью метода index.get_loc()

Используя метод loc

Метод loc в Python Pandas основан на метках и позволяет нам получать доступ к группе строк и столбцов по меткам. Этот метод можно использовать вместе со свойством Index для получения индекса строки на основе метки.

Вот пример, иллюстрирующий использование метода loc для получения индекса строки в Python.

import pandas as pd

cities_data = {'City': ['New York', 'Austin', 'Chicago', 'Houston', 'Phoenix'],
        'State': ['New York', 'Texas', 'Illinois', 'Texas', 'Arizona']}
df = pd.DataFrame(cities_data)

index_row = df.index[df['State'] == 'Texas'].tolist()[:]
print("Index of the row is:", index_row)

Выход:

Index of the row is: [1, 3]

Вот скриншот исходного кода:

Используя метод loc

Используя iterrows

Метод iterrows в Python позволяет нам перебирать строки Pandas DataFrame как пары (индекс, серия).

Хотя это не самый эффективный метод, он обеспечивает простой способ получения индекса.

Ниже приведен пример:

import pandas as pd

USA_data = {'Capital': ['Sacramento', 'Columbus', 'Albany', 'Austin', 'Phoenix'],
        'State': ['California', 'Ohio', 'New York', 'Texas', 'Arizona']}
df = pd.DataFrame(USA_data)

for index, row in df.iterrows():
    if row['Capital'] == 'Albany':
        index_row = index
print("Index of row is:", index_row)

Выход:

Index of row is: 2

Упомянутый ниже снимок экрана сделан после его реализации в редакторе Pycharm.

Используя iterrows

Используя метод query()

Метод query() в Pandas позволяет нам фильтровать строки на основе выражения запроса. Хотя он не предоставляет индекс строки напрямую, мы можем использовать его с другими методами, такими как index, для достижения этой цели.

Вот пример использования метода query() для получения индекса строки в Pandas:

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Age': [25, 30, 35, 28, 32]}
df = pd.DataFrame(data)

query_result = df.query("Name == 'Bob'")
index_row = query_result.index[0]
print("Index of the row is:", index_row)

Выход:

Index of the row is: 1

После выполнения я сделал снимок экрана ниже:

Используя метод query()

С помощью функции np.where()

Другой способ получить индекс — передать условие методу numpy.where().

Функция np.where() используется для поиска индексов элементов во входном массиве, когда указанное условие истинно.

Давайте посмотрим пример, как это сделать:

import pandas as pd
import numpy as np

data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'],
        'Age': [25, 30, 35, 28, 32]}
df = pd.DataFrame(data)

print(list(np.where(df["Age"] > 30)))

Выход:

[array([2, 4], dtype=int64)]

Скриншот упомянут ниже:

С помощью функции np.where()

Добавить комментарий