Проблема при использовании запроса в Python

#python #python-3.x #pandas

#python #python-3.x #pandas

Вопрос:

Вот мои данные

 cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],
        'Price': [22000,25000,27000,35000]
        }

df = pd.DataFrame(cars, columns = ['Brand', 'Price'])
  

Я хотел бы ввести данные для фильтрации с помощью i запроса pandas.

Пока это работает-

     i = 'Honda Civic'
   df[df['Brand'] == i]
  

Хотя, если я попытаюсь сделать это с помощью запроса, как показано ниже, это не сработает —

 i = 'Honda Civic'
(df
.query('Brand' == i))
  

Как я должен изменить команду запроса, чтобы она работала?

Комментарии:

1. Пробовал это (df .query('Brand' == @i) — не работает

2. мой плохой: df.query("Brand==@i") удалите кавычки вокруг Brand

3. Это мой код i = ['Honda Civic'] (df. query(Brand==@i)) . Я все еще получаю недопустимую синтаксическую ошибку:(

4. Я только что внес правку. Взгляните на предыдущий комментарий. df.query("Brand==@i") . и нет необходимости переносить его в список, если это всего лишь один элемент.

5. готово, теперь работает

Ответ №1:

Я всегда предпочитаю:

 df[df['Brand'] == i]
  

Для меня это намного проще, и я стараюсь избегать метода «запроса» фреймов данных Pandas. Тем более, что вы можете расширить результирующий фрагмент фрейма данных. Например, если у вас были другие столбцы, такие как «Состояние» и «Цена», вы могли бы сгруппировать агрегировать следующим образом:

 df[df['Brand'] == i].groupby('State')['Price'].sum()