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

Содержание
  1. Как выбрать строки по нескольким условиям, используя Pandas loc
  2. Метод 1: выберите строки, которые соответствуют нескольким условиям
  3. Способ 2: выберите строки, которые соответствуют одному из нескольких условий
  4. Дополнительные ресурсы
  5. Pandas: как выбирать строки на основе значений столбцов
  6. Метод 1: выберите строки, где столбец равен определенному значению
  7. Способ 2: выберите строки, где значение столбца находится в списке значений
  8. Способ 3: выбор строк на основе условий нескольких столбцов
  9. Дополнительные ресурсы
  10. Как выбрать строки по индексу в Pandas DataFrame
  11. Пример 1: выбор строк на основе целочисленного индексирования
  12. Пример 2. Выбор строк на основе индексации меток
  13. Разница между .iloc и .loc
  14. 8 способов фильтрации фреймов данных Pandas
  15. 1. Логические операторы
  16. 2. Несколько логических операторов
  17. 3. Исин
  18. 4. Аксессуар Str.
  19. 5. Тильда (~)
  20. 6. Запрос
  21. 7. Наибольший или наименьший
  22. 8. Loc и iloc
  23. Заключение

Как выбрать строки по нескольким условиям, используя Pandas loc

Вы можете использовать следующие методы для выбора строк кадра данных pandas на основе нескольких условий:

Метод 1: выберите строки, которые соответствуют нескольким условиям

df.loc[((df['col1'] == 'A') &(df['col2' ] == 'G'))] 

Способ 2: выберите строки, которые соответствуют одному из нескольких условий

В следующих примерах показано, как использовать каждый из этих методов на практике со следующими пандами DataFrame:

import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team position assists rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9 7 B F 4 12 

Метод 1: выберите строки, которые соответствуют нескольким условиям

В следующем коде показано, как выбирать только строки в DataFrame, где команда равна «A», а позиция равна «G»:

#select rows where team is equal to 'A' and position is equal to 'G' df.loc[((df['team'] == 'A') &(df['position'] == 'G'))] team position assists rebounds 0 A G 5 11 1 A G 7 8 

В DataFrame было только две строки, удовлетворяющие обоим этим условиям.

Читайте также:  Datetime убрать секунды python

Способ 2: выберите строки, которые соответствуют одному из нескольких условий

В следующем коде показано, как выбрать только те строки в DataFrame, в которых число передач больше 10 или число подборов меньше 8:

#select rows where assists is greater than 10 or rebounds is less than 8 df.loc[((df['assists'] > 10) |(df['rebounds'] < 8))] team position assists rebounds 3 A F 9 6 4 B G 12 6 5 B G 9 5 

В DataFrame было только три строки, удовлетворяющие обоим этим условиям.

Примечание. В этих двух примерах мы отфильтровали строки на основе двух условий, но с использованием & и | операторы, мы можем фильтровать столько условий, сколько захотим.

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

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Источник

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

Часто вам может понадобиться выбрать строки кадра данных 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]].

Источник

8 способов фильтрации фреймов данных Pandas

Pandas - популярная библиотека анализа и обработки данных для Python. Основная структура данных Pandas - это фрейм данных, который хранит данные в табличной форме с помеченными строками и столбцами.

Распространенной операцией при анализе данных является фильтрация значений на основе условия или нескольких условий. Pandas предоставляет множество способов фильтрации точек данных (то есть строк). В этой статье мы рассмотрим 8 различных способов фильтрации фрейма данных.

Начнем с импорта библиотек.

import numpy as np import pandas as pd

Давайте создадим образец фрейма данных для примеров.

1. Логические операторы

Мы можем использовать логические операторы для значений столбцов для фильтрации строк.

df[df.val > 0.5] name ctg val val2 ------------------------------------------- 1 John A 0.67 1 3 Mike B 0.91 5 4 Emily B 0.99 8 6 Catlin B 1.00 3

Мы выбрали строки, в которых значение в столбце «val» больше 0,5.

Логические операторы также работают со строками.

df[df.name > 'Jane'] name ctg val val2 ------------------------------------------- 1 John A 0.67 1 3 Mike B 0.91 5

Выбираются только имена, которые идут после слова «Джейн» в алфавитном порядке.

2. Несколько логических операторов

Pandas позволяет комбинировать несколько логических операторов. Например, мы можем применить условия к столбцам val и val2, как показано ниже.

df[(df.val > 0.5) & (df.val2 == 1)] name ctg val val2 ------------------------------------------- 1 John A 0.67 1

Знаки «&» обозначают «и», «|» означает «или».

3. Исин

Метод isin - это еще один способ применения множественных условий для фильтрации. Например, мы можем фильтровать имена, которые существуют в данном списке.

names = ['John','Catlin','Mike'] df[df.name.isin(names)] name ctg val val2 ------------------------------------------- 1 John A 0.67 1 3 Mike B 0.91 5 6 Catlin B 1.00 3

4. Аксессуар Str.

Pandas также является высокоэффективной библиотекой текстовых данных. Функции и методы метода доступа str предоставляют гибкие способы фильтрации строк на основе строк.

Например, мы можем выбрать имена, начинающиеся с буквы «J».

df[df.name.str.startswith('J')] name ctg val val2 ------------------------------------------- 0 Jane A 0.43 1 1 John A 0.67 1 5 Jack C 0.02 7

Функция contains под аксессором str возвращает значения, содержащие заданный набор символов.

df[df.name.str.contains('y')] name ctg val val2 ------------------------------------------- 2 Ashley C 0.40 7 4 Emily B 0.99 8

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

5. Тильда (~)

Оператор тильды используется для логики «не» при фильтрации. Если мы добавим оператор тильды перед выражением фильтра, будут возвращены строки, не соответствующие условию.

df[~df.name.str.startswith('J')] name ctg val val2 ------------------------------------------- 2 Ashley C 0.40 7 3 Mike B 0.91 5 4 Emily B 0.99 8 6 Catlin B 1.00 3

Получаются имена, не начинающиеся с буквы «J».

6. Запрос

Функция запроса предлагает немного больше гибкости при написании условий фильтрации. Мы можем передать условия в виде строки.

Например, следующий код возвращает строки, которые принадлежат категории B и имеют значение выше 0,5 в столбце val.

df.query('ctg == "B" and val > 0.5') name ctg val val2 ------------------------------------------- 3 Mike B 0.91 5 4 Emily B 0.99 8 6 Catlin B 1.00 3

7. Наибольший или наименьший

В некоторых случаях у нас нет определенного диапазона для фильтрации, а нужны только самые большие или самые маленькие значения. Функции nlargest и nsmallest позволяют выбирать строки, которые имеют наибольшее или наименьшее значение в столбце соответственно.

df.nlargest(3, 'val') name ctg val val2 ------------------------------------------- 6 Catlin B 1.00 3 4 Emily B 0.99 8 3 Mike B 0.91 5

Мы указываем количество наибольших или наименьших значений для выбора и имя столбца.

df.nsmallest(2, 'val2') name ctg val val2 ------------------------------------------- 0 Jane A 0.43 1 1 John A 0.67 1

8. Loc и iloc

Методы loc и iloc используются для выбора строк или столбцов на основе индекса или метки.

  • loc: выберите строки или столбцы с помощью меток
  • iloc: выберите строки или столбцы с помощью индексов

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

df.iloc[3:5, :] #rows 3 and 4, all columns name ctg val val2 ------------------------------------------- 3 Mike B 0.91 5 4 Emily B 0.99 8

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

df.loc[3:5, :] #rows 3 and 4, all columns name ctg val val2 ------------------------------------------- 3 Mike B 0.91 5 4 Emily B 0.99 8

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

Сейчас мы не можем передавать целые числа в метод loc, потому что метки индексов представляют собой буквы.

df.loc['b':'d', :] name ctg val val2 ------------------------------------------- b John A 0.67 1 c Ashley C 0.40 7 d Mike B 0.91 5

Заключение

Мы рассмотрели 8 различных способов фильтрации строк во фрейме данных. Все они полезны и пригодятся в определенных случаях.

Pandas - мощная библиотека для анализа и обработки данных. Он предоставляет множество функций и методов для обработки данных в табличной форме. Как и в случае с любым другим инструментом, лучший способ выучить Pandas - это практиковаться.

Спасибо за чтение. Пожалуйста, дайте мне знать, если у вас есть какие-либо отзывы.

Источник

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