Как выбрать строки по индексу в 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