python - 如何使用 pandas 向量化查找
问题描述
我正在尝试向量化一个操作,True
如果单元格值不在使用查找字典的列表中,则返回该操作。通过这个可重现的示例,我希望实现的目标将变得更加清晰。
首先,我创建了一个字典,其中键反映了下面构建source
的数据框中列的单元格值。df
SectorOverlaps ={'21438-26838': ['110-1058', '114-1058', '120-1058', '124-1058', '130-1058', '134-1058', '21438-36838', '15915-21420', '21438-16838', '25915-21420', '21438-26838', '35915-21420', '21438-36838', '21438-16838', '21438-26838', '9112-10029'], '110-1650': ['110-1650', '120-1650', '130-1650', '21438-12663', '21438-12663', '21438-12363', '19015-21420', '21438-22663', '21438-22663', '21438-22363', '29015-21420', '21438-32663', '21438-32663', '21438-32363', '39015-21420']}
df = pd.read_json('{"source":{"0":"110-1650","1":"21438-26838"},"dest":{"0":"120-468","1":"114-7616"}}')
我应用了一个查找,True
当列的单元格值dest
不在查找字典中包含的列表中时返回,SectorOverlaps
df.apply(lambda x: x['dest'] not in SectorOverlaps[x['source']], axis=1)
这个结果很好,它可以工作,但它真的很慢,我必须在数百万行上应用这个操作。
是否有人对如何加快此操作或最好是矢量化此操作有任何建议?