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


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

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

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

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

Пример 1. Выбор строк на основе целочисленной индексации

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

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
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. Выбор строк на основе индексации меток

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

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
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]].

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

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *