用于具有多个条件的数据帧过滤的python字典迭代

时间:2016-08-30 15:10:05

标签: python pandas dictionary

我基本上是在尝试构建基于解析查询返回结果的基本搜索引擎。

我有一个用户根据字符串中的解析输入生成的字典:

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'制作的条目。

1 个答案:

答案 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