首页 > 解决方案 > 如何使用 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)

这个结果很好,它可以工作,但它真的很慢,我必须在数百万行上应用这个操作。

是否有人对如何加快此操作或最好是矢量化此操作有任何建议?

标签: pythonpandas

解决方案


推荐阅读