微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用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 举报,一经查实,本站将立刻删除。