pandas 根据请求中的条件过滤 Dataframe

mlmc2os5  于 2023-01-11  发布在  其他
关注(0)|答案(2)|浏览(133)

我有一个 Dataframe ,我需要根据从UI请求中接收的条件进行筛选。请求示例:

{
"table": "abc",
"condition": "A=98 and C=73 and D='rendom_char'"
}

** Dataframe 示例:**

| | A类|B| C级|D级|
| - ------|- ------|- ------|- ------|- ------|
| 无|八十五|三十九|五十四|运输署|
| 1个|三十九|五十一|二十三|美国广播公司|
| 第二章|九十八|十七|七十三|定义|
| 三个|九十八|五十二|七十三|定义|
| 四个|八十五|五十二|二十一|第一|
| 五个|六十一|八十九|三十一|西维兹|
因此,假设我从UI获取"condition": "A=98 and C=73 and D='def'""condition": "A=98 and C=73"输出条件,结果如下所示:
| | A类|B| C级|D级|
| - ------|- ------|- ------|- ------|- ------|
| 第二章|九十八|十七|七十三|定义|
| 三个|九十八|五十二|七十三|定义|
我所面临的问题是如何转换字符串条件从用户界面到Python的形式,使我可以应用过滤器的数据。

bihw5rsg

bihw5rsg1#

DataFrame.query与替换=一起使用,以使=加倍:

d = {"condition": "A=98 and C=73 and D='def'"}
print (df.query(d['condition'].replace('=','==')))
    A   B   C    D
2  98  17  73  def
3  98  52  73  def

d = {"condition": "A=85 and C=21"}
print (df.query(d['condition'].replace('=','==')))

    A   B   C    D
4  85  52  21  rst
wwwo4jvm

wwwo4jvm2#

或者,您可以使用pandasql以SQL方式查询panda Dataframe :

import pandasql as psql
...

req = {"table": "abc", "condition": "A=98 and C=73 and D='def'"}
q = f"select * from df where {req['condition']}"

print(psql.sqldf(q, locals()))
A   B   C    D
0  98  17  73  def
1  98  52  73  def

相关问题