我有兩隻大熊貓DataFrames df1
和df2
用相當標準的格式:大熊貓上的外部合併DataFrames導致MemoryError ---如何將「大數據」與大熊貓合併?
one two three feature
A 1 2 3 feature1
B 4 5 6 feature2
C 7 8 9 feature3
D 10 11 12 feature4
E 13 14 15 feature5
F 16 17 18 feature6
...
併爲df2
相同的格式。這些數據幀的大小大約爲175MB和140MB。
merged_df = pd.merge(df1, df2, on='feature', how='outer', suffixes=('','_features'))
我得到以下的MemoryError:
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/tools/merge.py", line 39, in merge
return op.get_result()
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/tools/merge.py", line 217, in get_result
join_index, left_indexer, right_indexer = self._get_join_info()
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/tools/merge.py", line 353, in _get_join_info
sort=self.sort, how=self.how)
File "/nfs/sw/python/python-3.5.1/lib/python3.5/site-packages/pandas/tools/merge.py", line 559, in _get_join_indexers
return join_func(lkey, rkey, count, **kwargs)
File "pandas/src/join.pyx", line 187, in pandas.algos.full_outer_join (pandas/algos.c:61680)
File "pandas/src/join.pyx", line 196, in pandas.algos._get_result_indexer (pandas/algos.c:61978)
MemoryError
是否有可能有一個 「大小限制」 大熊貓dataframes合併是什麼時候?我很驚訝,這是行不通的。也許這是某個熊貓版本的錯誤?
編輯:正如在評論中提到的,合併列中的許多重複項可能很容易導致RAM問題。參見:Python Pandas Merge Causing Memory Overflow
現在的問題是,我們該如何做到這一點合併?不知何故,最好的辦法是分割數據框。
在'feature'列中是否有重複內容?如果有很多重複項,你的連接最終會變成**非常大** – maxymoo
@maxymoo是的。你能解釋爲什麼這會超過內存限制嗎?假設'df1'有1000萬行,特徵1有500K行,特徵2有500K行等等。數據幀本身只有150 MB ---爲什麼會出現內存錯誤? – ShanZhengYang
你使用的是32位的python/64位? –