Pandas — это мощная библиотека манипулирования данными на Python, а метод DataFrame.query()предоставляет удобный способ фильтрации данных на основе определенных условий. Хотя использовать фиксированные значения в запросе относительно просто, использование переменных может сделать ваш код более динамичным и пригодным для повторного использования. В этой статье мы рассмотрим различные методы включения переменных в df.query()и предоставим примеры кода для каждого подхода.
Метод 1: форматирование строк
Один из самых простых способов использования переменных в df.query()— форматирование строк. Вы можете динамически вставлять значения переменных в строку запроса с помощью оператора %или метода str.format(). Вот пример:
import pandas as pd
name = "John"
age = 25
df = pd.DataFrame({"Name": ["John", "Jane", "Mike"], "Age": [25, 30, 35]})
query_string = 'Name == "%s" and Age == %d' % (name, age)
result = df.query(query_string)
print(result)
Метод 2: f-строки (Python 3.6+)
С появлением f-строк в Python 3.6 форматирование строк стало еще проще. Вы можете напрямую вставлять переменные в строку запроса, используя фигурные скобки {}. Вот пример:
import pandas as pd
name = "John"
age = 25
df = pd.DataFrame({"Name": ["John", "Jane", "Mike"], "Age": [25, 30, 35]})
query_string = f'Name == "{name}" and Age == {age}'
result = df.query(query_string)
print(result)
Метод 3: использование локальных или глобальных переменных.
Другой подход — использовать функции locals()или globals()для доступа к переменным в строке запроса. Однако этот метод требует осторожности, поскольку потенциально может раскрыть конфиденциальную информацию. Вот пример:
import pandas as pd
name = "John"
age = 25
df = pd.DataFrame({"Name": ["John", "Jane", "Mike"], "Age": [25, 30, 35]})
query_string = 'Name == @name and Age == @age'
result = df.query(query_string)
print(result)
Метод 4: использование лямбда-функций
Для более сложных условий фильтрации вы можете использовать лямбда-функции в df.query()для доступа к переменным. Этот метод обеспечивает большую гибкость. Вот пример:
import pandas as pd
name = "John"
age = 25
df = pd.DataFrame({"Name": ["John", "Jane", "Mike"], "Age": [25, 30, 35]})
query_string = 'lambda x: x["Name"] == @name and x["Age"] == @age'
result = df.query(query_string)
print(result)
В этой статье мы рассмотрели несколько методов включения переменных в метод df.query()Pandas. Используя форматирование строк, f-строки, локальные/глобальные значения или лямбда-функции, вы можете сделать свои запросы более динамичными и пригодными для повторного использования. Выберите метод, который лучше всего соответствует вашим потребностям, исходя из сложности условий фильтрации. С помощью этих методов вы сможете использовать всю мощь Pandas для манипулирования и анализа данных.
Не забудьте оптимизировать производительность запросов, правильно индексируя DataFrame и обрабатывая любые потенциальные несоответствия типов данных.
Реализуя использование переменных в df.query(), вы можете эффективно фильтровать и анализировать данные, экономя время и усилия в рабочих процессах обработки данных.