Python dataframe выбрать строки

Как выбрать строки по индексу в 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]].
Читайте также:  Read and write to properties file java

Источник

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.

Читайте также:  Html svg with text

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

В следующих руководствах объясняется, как выполнять другие распространенные операции в 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, если запрошенный индексатор находится за пределами границ, за исключением индексаторов срезов, которые разрешают индексацию за пределами границ.

Функция Python Pandas iloc

Синтаксис

Параметры

  1. Целые числа, например, 5.
  2. Список или массив целых чисел, например, [4, 3, 0].
  3. Объект среза с целыми числами, например, 1:7.
  4. Логический массив.
  5. Вызываемая функция с аргументом (вызывающая серия или фрейм данных) возвращает допустимые выходные данные для индексации. Это очень полезно в цепочках методов, когда вы не ссылаетесь на вызывающий объект, но хотели бы основывать свой выбор на некоторой логике или значении.

В пользу 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[].

Читайте также:  Добавить класс по клику javascript

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

Источник

Оцените статью