我基本上是在尝试构建基于解析查询返回结果的基本搜索引擎。
我有一个用户根据字符串中的解析输入生成的字典:
input = {“color”: [“black”], “make”: [“honda”], “type”: [“”]}
然后我尝试使用该输入,对数据集进行搜索和过滤(我目前将其存储为pandas数据帧,因此请告知这是否也不是最佳的。)
list(df.column.values) = make,type,color,mpg,year
honda,coupe,red,32,2014
bmw,suv,black,21,2012
honda,suv,black,24,2015
vw,sedan,black,31,2016
我需要迭代输入字典的有效值(注意'type'没有值)并根据用户输入的内容进行过滤,'color'和'make')。有时他们可能会包含类型并遗漏颜色等,所以我可能永远不会为我的字典中的每个键都有值;
Sudo代码:
for each valid value in my input dictionary:
filter df by appropriate_column=appropriate_value
因此,根据我的输入示例,我会将我的df过滤到只有'黑色'并由'honda'制作的条目。
答案 0 :(得分:2)
让d
成为你的词典,然后:
cond = [df[k].apply(lambda k: k in v if v != [''] else True) for k, v in d.items()]
cond_total = functools.reduce(lambda x, y: x & y, cond)
print(df[cond_total])
输出:
make type color mpg year
2 honda suv black 24 2015