使用pandas_dedupe执行地址匹配时出现内存错误

问题描述

我正在尝试使用pandas_dedupe进行地址匹配。

我通过地址将文件“帐户”与较大的文件“主”进行匹配。 “主”文件包含760万行和10列,“帐户”文件包含1.9万行和26列。

由于内存错误,我不得不将“主”文件分解为3个数据帧并进行连接。

代码如下:

import pandas as pd
import numpy as np
accounts = pd.read_csv("X:\Data\Accounts.csv",sep=',',encoding='latin-1')
first = pd.read_csv("X:\Data\First.csv",encoding='latin-1',low_memory=False )
second = pd.read_csv("X:\Data\Second.csv",low_memory=False )
third =  pd.read_csv("X:\Data\Third.csv",low_memory=False )
frames = [first,second,third]
master = pd.concat(frames)
master.reset_index(inplace=True)
dtype=np.int64
import pandas_dedupe
data_final = pandas_dedupe.link_dataframes(master,accounts,["ad1","ad2","ad3","ad4","ad5","postcode"])

运行最后一行代码时,出现以下错误

MemoryError                               Traceback (most recent call last)
<ipython-input-24-6353b9717b2f> in <module>
      1 import pandas_dedupe
----> 2 data_final = pandas_dedupe.link_dataframes(master,"postcode"])

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas_dedupe\link_dataframes.py in link_dataframes(dfa,dfb,field_properties,config_name)
     28     dfa.set_index(['index_field'],inplace=True)
     29 
---> 30     data_1 = dfa.to_dict(orient='index')
     31 
     32 

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas\core\frame.py in to_dict(self,orient,into)
   1317                 )
   1318             return into_c((t[0],dict(zip(self.columns,t[1:])))
-> 1319                           for t in self.itertuples(name=None))
   1320         else:
   1321             raise ValueError("orient '{o}' not understood".format(o=orient))

MemoryError: 

我尝试了一些技巧来降低内存使用率,但是没有成功。还有什么可以尝试的吗?

非常感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)