Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在查询中使用列表_Python_Pandas_List - Fatal编程技术网

Python 在查询中使用列表

Python 在查询中使用列表,python,pandas,list,Python,Pandas,List,我正在对数据帧执行查询: Index Category 1 Foo 2 Bar 3 Cho 4 Foo 我想返回类别为“Foo”或“Bar”的行。 当我使用代码时: df.query("Catergory==['Foo','Bar']") 这可以很好地工作并返回: Index Category 1 Foo 2 Bar 4 Foo 但是,将来我希望动态更改过滤器,因此我写道: filter_list=['Foo','Bar'] df.q

我正在对数据帧执行查询:

Index Category
1     Foo
2     Bar
3     Cho
4     Foo
我想返回类别为“Foo”或“Bar”的行。 当我使用代码时:

df.query("Catergory==['Foo','Bar']")
这可以很好地工作并返回:

Index Category
1     Foo
2     Bar
4     Foo
但是,将来我希望动态更改过滤器,因此我写道:

filter_list=['Foo','Bar']
df.query("Catergory==filter_list")
它抛出了错误:

UndefinedVariableError: name 'filter_list' is not defined
我尝试的其他变体没有成功:

df.query("Catergory"==filter_list)
df.query("Catergory=="filter_list)
分别生产:

ValueError: expr must be a string to be evaluated, <class 'bool'> given
SyntaxError: invalid syntax
ValueError:expr必须是要计算的字符串,给定
SyntaxError:无效语法

使用
@
查询中引用变量

filter_list=['Foo','Bar']

df.query("Category == @filter_list")
输出:

   Index Category
0      1      Foo
1      2      Bar
3      4      Foo
试试这个:

df = pd.DataFrame({'Index':[1,2,3,4],'Category':['Foo','Bar','Cho','Foo']})
filter_list = ['Foo','Bar']

df.query(f'Catergory=={filter_list}')

使用
isin
方法

df.query('Category.isin(@filter_list)')

你的声明有效吗?显然,如果你忘记了一个
,人们会投反对票。修复它@ScottBostonWhich pandas版本你有,我测试了它,它的作品@ScottBoston0.25.0版本是,但该图像未使用“isin”。