在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。
Original: https://blog.csdn.net/weixin_36378793/article/details/113903140
Author: 桔梗一身骄傲
Title: merge规则 python_python dataframe 在merge时 产生笛卡尔积
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/756768/
转载文章受原作者版权保护。转载请注明原作者出处!