python dataframe 在merge時 產生笛卡爾積


在pandas中,concat, merge, join的使用方法可以參考以下資料:
http://blog.csdn.net/stevenkwong/article/details/52528616
主要講下笛卡爾積:

 

import pandas as pd
from pandas import DataFrame
df1=DataFrame({'a':[1,2,3], 'b':[4,5,6], 'key':[0,0,0]})
df2=DataFrame({'c':[3,2,1], 'd':[6,5,4], 'key':[0,0,0]})
data = pd.merge(df1, df2, on='key')

 

這里merge默認為內連接。

 

df1:

   a  b  key
0  1  4    0
1  2  5    0
2  3  6    0

  

df2:

 

   c  d  key
0  3  6    0
1  2  5    0
2  1  4    0

  

data:

 

   a  b  key  c  d
0  1  4    0  3  6
1  1  4    0  2  5
2  1  4    0  1  4
3  2  5    0  3  6
4  2  5    0  2  5
5  2  5    0  1  4
6  3  6    0  3  6
7  3  6    0  2  5
8  3  6    0  1  4

  

由此可知,當兩個表連接時,有相同的key值就產生積。

如果,需要進行merge的次數過多時,每次都產生笛卡爾積,最終就會產生內存爆炸的現象。

所以,在merge時,一定要避免相同的key值,可以分批次merge,最后再concat。
---------------------

原文:https://blog.csdn.net/yj1556492839/article/details/79529186


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM