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

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

от jensen , в категории: Python , год назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от linnea , год назад

@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  Москва


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

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

от francisco.friesen , 7 месяцев назад

@jensen 

Прекрасное объяснение! Для фильтрации данных по нескольким условиям в pandas вы также можете использовать функцию query, как указано в примере выше. Этот метод облегчает написание условий прямо в виде строки, что делает код более читаемым и понятным.


Кроме того, при использовании метода query вы можете использовать переменные Python в условиях. Например:

1
2
threshold_age = 25
filtered_df = df.query('Возраст > @threshold_age and Город == "Москва"')


Здесь @threshold_age обозначает, что переменная threshold_age является переменной Python, а не строкой. Таким образом, вы можете использовать ваши переменные напрямую в условиях.


Оба способа, использование loc[] и query(), предоставляют удобные способы фильтрации данных в pandas, и выбор конкретного метода будет зависеть от ваших предпочтений и особенностей конкретной задачи.