首页 > 解决方案 > 并行化多个数据帧上的搜索操作

问题描述

我有多个巨大的数据框,我试图使用来自一个数据框的唯一标识符作为其他数据框的搜索基础进行映射。我想加快这个过程,因为整个过程需要 6 个多小时才能完成。我目前正在做的是使用该df[df['Column'] == 'Unique value']方法在其他数据帧中搜索键,将匹配串在一起并附加到一个新的数据帧。这个过程每个条目大约需要 0.2 秒,我觉得这有点偏高。我已经尝试apply.async()作为一种并行化的方法,但是为每个唯一键迭代创建的过程比在单个内核上运行它需要更多的时间。我可以做些什么来加快速度?

我当前实现的相关片段如下:

def indexer(df, index):
   return df[df['Column'] == 'index']

def mapping:
   with Pool(processes=3) as pool:
      for i in df1.iloc[:,:]['Column'].unqiue():
         p1 = pool.apply_async(indexer, (df1,index,))
         p2 = pool.apply_async(indexer, (df2,index,))
         p3 = pool.apply_async(indexer, (df3,index,))
         
         df1 = p1.get()
         df2 = p2.get()
         df3 = p3.get()

谢谢你的建议!

标签: pythonpandasdataframe

解决方案


推荐阅读