Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70% Забронировать скидку
07 Июл 2023
2 мин
907

Фильтрация DataFrame в Pandas с использованием методов ‘in’ и ‘not in’ аналогично SQL

Одна из часто встречающихся задач при работе с данными — это фильтрация. Это актуально и при работе с базами данных, и при работе с данными в Pandas.

Одна из часто встречающихся задач при работе с данными — это фильтрация. Это актуально и при работе с базами данных, и при работе с данными в Pandas. В частности, часто требуется отфильтровать данные по тому, содержит ли определенная колонка какие-то конкретные значения. В SQL для этого используются операторы IN и NOT IN. А как сделать то же самое в Pandas?

Допустим, у нас есть таблица (DataFrame) с именем df, в которой есть колонка ‘country’, и мы хотим оставить в таблице только те строки, где в колонке ‘country’ стоят значения ‘UK’ или ‘China’. В SQL мы бы написали что-то вроде SELECT * FROM df WHERE country IN ('UK', 'China'). Как сделать то же самое в Pandas?

В Pandas для этого есть метод isin(). Вот как можно использовать его на нашем примере:

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_keep = ['UK', 'China']

df_filtered = df[df['country'].isin(countries_to_keep)]

Теперь df_filtered — это таблица, в которой остались только те строки из df, где в колонке ‘country’ стоит либо ‘UK’, либо ‘China’.

А если мы хотим сделать обратное, то есть оставить только те строки, где в колонке ‘country’ стоят значения, отличные от ‘UK’ и ‘China’? В SQL мы бы написали SELECT * FROM df WHERE country NOT IN ('UK', 'China'). В Pandas для этого есть метод ~isin(). Вот как можно использовать его на нашем примере:

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_exclude = ['UK', 'China']

df_filtered = df[~df['country'].isin(countries_to_exclude)]

Теперь df_filtered — это таблица, в которой остались только те строки из df, где в колонке ‘country’ стоит что-то, отличное от ‘UK’ и ‘China’.

Таким образом, для фильтрации данных в Pandas по значениям определенной колонки можно использовать методы isin() и ~isin(), которые аналогичны операторам IN и NOT IN в SQL.

Добавить комментарий

Подарок
Забрать подарок