- Как выбрать строки по индексу в Pandas DataFrame
- Пример 1: выбор строк на основе целочисленного индексирования
- Пример 2. Выбор строк на основе индексации меток
- Разница между .iloc и .loc
- Pandas: как выбирать строки на основе значений столбцов
- Метод 1: выберите строки, где столбец равен определенному значению
- Способ 2: выберите строки, где значение столбца находится в списке значений
- Способ 3: выбор строк на основе условий нескольких столбцов
- Дополнительные ресурсы
- Как работает функция Pandas Dataframe.iloc[]
- Что такое функция DataFrame.iloc[]?
- Синтаксис
- Параметры
- Пример iloc[]
Как выбрать строки по индексу в 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: как выбирать строки на основе значений столбцов
Вы можете использовать один из следующих методов для выбора строк в pandas DataFrame на основе значений столбца:
Метод 1: выберите строки, где столбец равен определенному значению
Способ 2: выберите строки, где значение столбца находится в списке значений
df.loc[df['col1']. isin([value1, value2, value3, . ])]
Способ 3: выбор строк на основе условий нескольких столбцов
df.loc[(df['col1'] == value) &(df['col2'] < value)]
В следующем примере показано, как использовать каждый метод со следующими пандами DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team points rebounds blocks 0 A 5 11 4 1 A 7 8 7 2 B 7 10 7 3 B 9 6 6 4 B 12 6 5 5 C 9 5 8 6 C 9 9 9 7 C 4 12 10
Метод 1: выберите строки, где столбец равен определенному значению
В следующем коде показано, как выбрать каждую строку в DataFrame, где столбец «точки» равен 7:
#select rows where 'points' column is equal to 7 df.loc[df['points'] == 7] team points rebounds blocks 1 A 7 8 7 2 B 7 10 7
Способ 2: выберите строки, где значение столбца находится в списке значений
В следующем коде показано, как выбрать каждую строку в DataFrame, где столбец «точки» равен 7, 9 или 12:
#select rows where 'points' column is equal to 7 df.loc[df['points']. isin([7, 9, 12])] team points rebounds blocks 1 A 7 8 7 2 B 7 10 7 3 B 9 6 6 4 B 12 6 5 5 C 9 5 8 6 C 9 9 9
Способ 3: выбор строк на основе условий нескольких столбцов
В следующем коде показано, как выбрать каждую строку в DataFrame, где столбец «команда» равен «B», а столбец «очки» больше 8:
#select rows where 'team' is equal to 'B' and points is greater than 8 df.loc[(df['team'] == 'B') &(df['points'] > 8)] team points rebounds blocks 3 B 9 6 6 4 B 12 6 5
Обратите внимание, что возвращаются только две строки, в которых команда равна «B», а «очки» больше 8.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Как работает функция Pandas Dataframe.iloc[]
Функция Pandas Dataframe.iloc[] используется, когда метка индекса фрейма данных отличается от числового ряда 0, 1, 2, 3….n или в каком-то сценарии пользователь не знает метку индекса.
Строки можно извлечь, используя воображаемую позицию индекса, которая не отображается в DataFrame.
Что такое функция DataFrame.iloc[]?
Pandas.DataFrame.iloc — это уникальный встроенный метод, который возвращает индексирование на основе целочисленного местоположения для выбора по положению. Кроме того, метод DataFrame.iloc[] предоставляет способ выбора строк DataFrame. iloc[] в основном основан на целочисленной позиции(от 0 до длины-1 оси), но также может использоваться с булевым массивом.
Pandas.DataFrame.iloc вызовет IndexError, если запрошенный индексатор находится за пределами границ, за исключением индексаторов срезов, которые разрешают индексацию за пределами границ.
Синтаксис
Параметры
- Целые числа, например, 5.
- Список или массив целых чисел, например, [4, 3, 0].
- Объект среза с целыми числами, например, 1:7.
- Логический массив.
- Вызываемая функция с аргументом (вызывающая серия или фрейм данных) возвращает допустимые выходные данные для индексации. Это очень полезно в цепочках методов, когда вы не ссылаетесь на вызывающий объект, но хотели бы основывать свой выбор на некоторой логике или значении.
В пользу iloc есть два «аргумента»:
Несколько столбцов и строк можно выбрать с помощью файла .iloc.
data . iloc [ 0 : 5 , 5 : 8 ] # first 5 rows and 5th, 6th, 7th columns of data frame(county -> phone1).
Пример iloc[]
В этом примере мы будем использовать внешний файл CSV. Сначала мы импортируем CSV-файл и читаем его с помощью метода read_csv() в pandas.
Теперь в этом примере мы будем использовать первые 10 записей CSV-файла. Затем мы выберем строки DataFrame, используя метод pandas.DataFrame.iloc[].
Country Item Type Sales Channel Order Priority Order Date Order ID . . . Units Sold Unit Price Unit Cost Total Revenue Total Cost Total Profit
Australia and Oceania Tuvalu Baby Food Offline H 5 / 28 / 2010 669165933 . . . 9925 255.28 159.42 2533654.00 1582243.50 951410.50
Central America and the Caribbean Grenada Cereal Online C 8 / 22 / 2012 963881480 . . . 2804 205.70 117.11 576782.80 328376.44 248406.36
Europe Russia Office Supplies Offline L 5 / 2 / 2014 341417157 . . . 1779 651.21 524.96 1158502.59 933903.84 224598.75
Sub - Saharan Africa Sao Tome and Principe Fruits Online C 6 / 20 / 2014 514321792 . . . 8102 9.33 6.92 75591.66 56065.84 19525.82
Sub - Saharan Africa Rwanda Office Supplies Offline L 2 / 1 / 2013 115456712 . . . 5062 651.21 524.96 3296425.02 2657347.52 639077.50
Australia and Oceania Solomon Islands Baby Food Online C 2 / 4 / 2015 547995746 . . . 2974 255.28 159.42 759202.72 474115.08 285087.64
Sub - Saharan Africa Angola Household Offline M 4 / 23 / 2011 135425221 . . . 4187 668.27 502.54 2798046.49 2104134.98 693911.51
Sub - Saharan Africa Burkina Faso Vegetables Online H 7 / 17 / 2012 871543967 . . . 8082 154.06 90.93 1245112.92 734896.26 510216.66
Sub - Saharan Africa Republic of the Congo Personal Care Offline M 7 / 14 / 2015 770463311 . . . 6070 81.73 56.67 496101.10 343986.90 152114.20
Sub - Saharan Africa Senegal Cereal Online H 4 / 18 / 2014 616607081 . . . 6593 205.70 117.11 1356180.10 772106.23 584073.87
Теперь давайте выберем первую строку DataFrame, используя iloc[0].