Как фильтровать данные по нескольким условиям pandas?

Пользователь

от jensen , в категории: Python , 2 месяца назад

Как фильтровать данные по нескольким условиям pandas?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от linnea , 2 месяца назад

@jensen 

Для фильтрации данных по нескольким условиям в библиотеке pandas можно использовать операторы сравнения (& для логической операции "и" и | для логической операции "или") и методы фильтрации .loc[ ] или .query( ).


Вот примеры использования этих методов:


Способ 1: Использование метода .loc[ ]:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Импортировать библиотеку pandas
import pandas as pd

# Создать DataFrame
data = {'Имя': ['Алексей', 'Анна', 'Мария', 'Иван', 'Ольга'],
        'Возраст': [25, 32, 18, 41, 27],
        'Город': ['Москва', 'Санкт-Петербург', 'Москва', 'Казань', 'Екатеринбург']}
df = pd.DataFrame(data)

# Фильтрация данных по нескольким условиям
filtered_df = df.loc[(df['Возраст'] > 25) & (df['Город'] == 'Москва')]

# Вывод отфильтрованных данных
print(filtered_df)


Способ 2: Использование метода .query( ):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Импортировать библиотеку pandas
import pandas as pd

# Создать DataFrame
data = {'Имя': ['Алексей', 'Анна', 'Мария', 'Иван', 'Ольга'],
        'Возраст': [25, 32, 18, 41, 27],
        'Город': ['Москва', 'Санкт-Петербург', 'Москва', 'Казань', 'Екатеринбург']}
df = pd.DataFrame(data)

# Фильтрация данных по нескольким условиям
filtered_df = df.query('Возраст > 25 and Город == "Москва"')

# Вывод отфильтрованных данных
print(filtered_df)


Оба способа должны привести к выводу следующего результата:

1
2
       Имя  Возраст   Город
0  Алексей       25  Москва


Обратите внимание, что в обоих примерах используются условия с операторами сравнения (>, ==), но вы можете использовать и другие операторы, в зависимости от своих потребностей.