2017-04-04 33 views
0

我想使用下面的代碼合併兩個excel文件,並遇到錯誤「ValueError:數組太大; arr.size * arr.dtype.itemsize大於最大可能的大小。」ValueError:陣列太大

import pandas as pd 

file1 = pd.read_excel("file1.xlsx") 
file2 = pd.read_excel("file2.xlsx") 

file3 = file1.merge(file2, on="Input E-mail", how="outer") 

file3.to_excel("merged1.xlsx") 

文件大小爲100MB〜+〜100MB,可用RAM爲9GB(最大16GB)

+2

您使用的是64位的Python? – zmbq

+0

目前使用32位 – Nivas

+0

然後切換到64位。 – zmbq

回答

1

,您的最終數據幀可以比你的兩個輸入的人大得多。簡單的例子:

import pandas as pd 

values = pd.DataFrame({"id": [1,1,1,1], "value": ["a", "b", "c", "d"]}) 

users = pd.DataFrame({"id": [1,1,1], "users": ["Amy", "Bob", "Dan"]}) 

big_table = pd.merge(users, values, how="outer") 

print big_table 

結果:

 id users value 
0  1 Amy  a 
1  1 Amy  b 
2  1 Amy  c 
3  1 Amy  d 
4  1 Bob  a 
5  1 Bob  b 
6  1 Bob  c 
7  1 Bob  d 
8  1 Dan  a 
9  1 Dan  b 
10 1 Dan  c 
11 1 Dan  d 
+0

感謝您的回覆。這是打算,我正在尋找結果正是你所描述的,但由於文件大小爲100MB,它給出了「陣列太大」的錯誤。你能幫我解決這個問題嗎? – Nivas

+0

@ user3783174如果您需要整個合併的數據幀,解決此問題的唯一方法是讓機器擁有更多RAM。但是,你需要這一切嗎?也許你可以在合併之前過濾你最感興趣的行? – Akavall

+0

不幸的是。我需要所有的數據。你能建議我所需的RAM嗎? – Nivas

相關問題