Как выбрать строки по индексу в Pandas DataFrame


Часто вам может понадобиться выбрать строки кадра данных pandas на основе их значения индекса.

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

Если вы хотите выбрать строки на основе индексации меток, вы можете использовать функцию .loc .

В этом руководстве представлен пример использования каждой из этих функций на практике.

Пример 1: выбор строк на основе целочисленного индексирования

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

import pandas as pd
import numpy as np

#make this example reproducible
np.random.seed (0)

#create DataFrame
df = pd.DataFrame(np.random.rand (6,2), index=range(0,18,3), columns=['A', 'B'])

#view DataFrame
df

 A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the 5th row of the DataFrame
df.iloc [[4]]

 A B
12 0.963663 0.383442

Мы можем использовать аналогичный синтаксис для выбора нескольких строк:

#select the 3rd, 4th, and 5th rows of the DataFrame
df.iloc [[2, 3, 4]]

 A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

Или мы могли бы выбрать все строки в диапазоне:

#select the 3rd, 4th, and 5th rows of the DataFrame
df.iloc [2:5]

 A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

Пример 2. Выбор строк на основе индексации меток

В следующем коде показано, как создать кадр данных pandas и использовать .loc для выбора строки с меткой индекса 3 :

import pandas as pd
import numpy as np

#make this example reproducible
np.random.seed (0)

#create DataFrame
df = pd.DataFrame(np.random.rand (6,2), index=range(0,18,3), columns=['A', 'B'])

#view DataFrame
df

 A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the row with index label '3'
df.loc[[3]]

 A B
3 0.602763 0.544883

Мы можем использовать аналогичный синтаксис для выбора нескольких строк с разными метками индекса:

#select the rows with index labels '3', '6', and '9'
df.loc[[3, 6, 9]]

 A B
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773

Разница между .iloc и .loc

Приведенные выше примеры иллюстрируют тонкую разницу между .iloc и .loc :

  • .iloc выбирает строки на основе целочисленного индекса.Итак, если вы хотите выбрать 5-ю строку в DataFrame, вы должны использовать df.iloc[[4]], так как первая строка имеет индекс 0, вторая строка имеет индекс 1 и так далее.
  • .loc выбирает строки на основе помеченного индекса.Итак, если вы хотите выбрать строку с меткой индекса 5, вы должны напрямую использовать df.loc[[5]].

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

Как получить номера строк в кадре данных Pandas
Как удалить строки со значениями NaN в Pandas
Как удалить столбец индекса в Pandas

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