Wil*_*ade 6 python list pandas
我正在对 DataFrame 执行查询:
Index Category
1 Foo
2 Bar
3 Cho
4 Foo
Run Code Online (Sandbox Code Playgroud)
我想返回类别为“Foo”或“Bar”的行。当我使用代码时:
df.query("Catergory==['Foo','Bar']")
Run Code Online (Sandbox Code Playgroud)
这工作正常并返回:
Index Category
1 Foo
2 Bar
4 Foo
Run Code Online (Sandbox Code Playgroud)
但是,将来我希望动态更改过滤器,所以我写道:
filter_list=['Foo','Bar']
df.query("Catergory==filter_list")
Run Code Online (Sandbox Code Playgroud)
哪个抛出了错误:
UndefinedVariableError: name 'filter_list' is not defined
Run Code Online (Sandbox Code Playgroud)
我尝试过但没有成功的其他变体是:
df.query("Catergory"==filter_list)
df.query("Catergory=="filter_list)
Run Code Online (Sandbox Code Playgroud)
分别生产:
ValueError: expr must be a string to be evaluated, <class 'bool'> given
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
Sco*_*ton 11
使用@以参考变量query:
filter_list=['Foo','Bar']
df.query("Category == @filter_list")
Run Code Online (Sandbox Code Playgroud)
输出:
Index Category
0 1 Foo
1 2 Bar
3 4 Foo
Run Code Online (Sandbox Code Playgroud)
使用isin方法。
df.query('Category.isin(@filter_list)')
Run Code Online (Sandbox Code Playgroud)
尝试这个:
df = pd.DataFrame({'Index':[1,2,3,4],'Category':['Foo','Bar','Cho','Foo']})
filter_list = ['Foo','Bar']
df.query(f'Catergory=={filter_list}')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4999 次 |
| 最近记录: |