pandas值在字典中查找并返回键 - python

时间:2017-07-20 05:14:39

标签: python python-2.7 dictionary

在我的pandas数据框列中,我需要检查列是否包含字典值中的任何单词,然后我应该返回密钥。

my_dict = {'woodhill': ["woodhill"],'woodcocks': ["woodcocks"], 'whangateau' : ["whangateau","whangate"],'whangaripo' : ["whangaripo","whangari","whangar"],
              'westmere' : ["westmere"],'western springs': ["western springs","western springs","western spring","western sprin",
"western spri","western spr","western sp","western s"]}

我可以为此编写一个for循环,但是,我的数据框中有近150万条记录,字典中有100多个项目,在某些情况下每个最多可能有20个值。我该如何有效地做到这一点?我可以创建反转值作为键和键作为字典中的值以使其快速?感谢。

2 个答案:

答案 0 :(得分:2)

你可以反转你的字典

reversed_dict = {val: key for key in my_dict for val in my_dict[key]}

然后使用您的数据框进行映射

df =pd.DataFrame({'col1':['western springs','westerns','whangateau','whangate']})
df['col1'] = df['col1'].map(reversed_dict)

试试这段代码,这可能会对您有所帮助。

答案 1 :(得分:1)

首先反转字典项目。 #作为有限的项目,所以它会很快。

从字典中创建第二个数据帧。 #而不是搜索与dataframe进行每次比较的所有键,最好是连接。所以为此创建数据帧。

第三个从大尺寸数据框到小尺寸数据框(在本例中是字典)中进行左连接。