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