[英]Giving precedence to AND and OR operators inside the Pandas.query() method?
我有以下玩具数据框:
import pandas as pd
df = pd.DataFrame({'Manufacturer':['BMW', 'Chrysler', 'Chrysler', 'Chrysler', 'Buick', 'Toyota', 'Ford', 'Buick'],
'Metric':['Indicator', 'Indicator', 'Indicator', 'Indicator', 'Indicator', 'Indicator', 'Indicator', 'Indicator'],
'Dimension':['Short', 'Short', 'Short', 'Long', 'Short', 'Short', 'Long', 'Long'],
'User': ['USA', 'USA', 'USA', 'Canada', 'Japan', 'USA', 'USA', 'Russia'],
'Sales':[500, 3000, 2500, 200, 50, 1000, 9000, 5000],
'Expenses':[20, 50, 70, 90, 10, 3, 100, 100],
'Rebate':[1, 26, 90, 87, 100, 1000, 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() 方法的文档没有显示这种情况。
有没有人看到语法不正确的地方? 提前致谢!
您应该能够进行如下查询:
df.query('(Sales > @user_input_sales OR Expenses > @user_input_expenses)'
'AND (Rebate > @user_input_rebates)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.