在Pandas.query方法中赋予AND和OR运算符优先权?

问题描述

我有以下玩具数据框:

import pandas as pd

df = pd.DataFrame({'Manufacturer':['BMW','Chrysler','Buick','Toyota','Ford','Buick'],'Metric':['Indicator','Indicator','Indicator'],'Dimension':['Short','Short','Long','Long'],'User': ['USA','USA','Canada','Japan','Russia'],'Sales':[500,3000,2500,200,50,1000,9000,5000],'Expenses':[20,70,90,10,3,100,100],'Rebate':[1,26,87,14,90]
                   })

我有以下脚本,该脚本提示用户输入一些信息,然后返回经过过滤的输出

user_input_sales = float(raw_input('Enter a value to filter Sales:  '))
user_input_expenses = float(raw_input('Enter a value to filter Expenses:  '))
user_input_rebates = float(raw_input('Enter a value to filter Rebates:  '))

subset_df = df.query('Sales > @user_input_sales or Expenses > @user_input_expenses')

print(subset_df)

这很好。但是,现在我希望能够进行如下查询

subset_df = df_query(('Sales > @user_input_sales or Expenses > @user_input_expenses')) AND ('Rebates > @ user_input_rebates')

请注意使用括号将OR和AND运算符放在优先位置。

我似乎无法(语法上)完成这项工作。 .query()方法的文档没有显示这种情况。

有人看到语法不正确的地方吗?预先感谢!

解决方法

您应该能够进行以下查询:

SortingType