首页 > 解决方案 > 将列值与 dict 匹配

问题描述

我有一个字典和一个数据框,例如下面的示例 v 和 df。我想搜索 df 中的项目并返回与 dict 中的值具有最大数量的字段值的项目。在这种情况下,它将是第 3 项。我在想也许将 apply 与 lambda 函数一起使用,或者转置 df。我只是无法安静地绕过它。如果有人有巧妙的方法来做到这一点或任何提示,他们将不胜感激。

输入:

v={'size':1,'color':red}

df:

item size color
2    2    red
3    1    red

Output:
3

标签: pythonpython-2.7pandas

解决方案


另一种解决方案是使用字典而不是数据框:

v = {'size': 1, 'color': 'red'}

match_count = {}

fields = df.columns[1:]

for k, value in df.to_dict(orient='index').items():
    match_count[value['item']] = sum(value[i] == v[i] for i in fields & v.keys())

结果

print(match_count)
# {2: 1, 3: 2}

res = max(match_count.items(), key=lambda x: x[1])

print(res)
# (3, 2)

推荐阅读