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