繁体   English   中英

在 Pandas.query() 方法中优先使用 AND 和 OR 运算符?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM