Python 为对象生成查询(布尔)函数

Python 为对象生成查询(布尔)函数,python,pandas,dataframe,Python,Pandas,Dataframe,有一个数据帧df=pd.dataframe({'a':[20,51,34,41,44]})和一个结构如下的dict{'a':{'operator':'IIUC您可以使用reduce和和将您的条件与pd.eval链接起来: from operator import and_ from functools import reduce d = {'A': {'operator': '<', 'value': 40}} print (df.loc[reduce(and_, [df.eval(f

有一个数据帧
df=pd.dataframe({'a':[20,51,34,41,44]})
和一个结构如下的dict
{'a':{'operator':'IIUC您可以使用
reduce
将您的条件与
pd.eval
链接起来:

from operator import and_
from functools import reduce

d = {'A': {'operator': '<', 'value': 40}}

print (df.loc[reduce(and_, [df.eval(f'{k}{v.get("operator")}{v.get("value")}')
                           for k,v in d.items()])])

    A
0  20
2  34
来自操作员导入和_
从functools导入reduce

d={'A':{'operator':'您能在选择中使用for循环,然后以这种方式为'A'赋值吗?这是可能的,但对于大数据帧,这需要花费太长的时间。我更喜欢
.loc
请与预期输出共享示例数据。更容易推理并提供解决方案(如果有的话)
from operator import and_
from functools import reduce

d = {'A': {'operator': '<', 'value': 40}}

print (df.loc[reduce(and_, [df.eval(f'{k}{v.get("operator")}{v.get("value")}')
                           for k,v in d.items()])])

    A
0  20
2  34