#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()