>>>df1=pd.DataFrame({'key':['b','b','a','c','a','b'],'data1':range(6)})>>>df2=pd.DataFrame({'key':['a','b','a','b','d'],'data2':range(5)})>>>df1key data1
0 b 01 b 12 a 23 c 34 a 45 b 5>>>df2key data2
0 a 01 b 12 a 23 b 34 d 4>>>pd.merge(df1,df2,on='key',how='left')key data1 data2
0 b 01.01 b 03.02 b 11.03 b 13.04 a 20.05 a 22.06 c 3 NaN
7 a 40.08 a 42.09 b 51.010 b 53.0>>>pd.merge(df1,df2,how='inner')key data1 data2
0 b 011 b 032 b 113 b 134 b 515 b 536 a 207 a 228 a 409 a 42
2、join方法
用于按照索引合并
這個函數(shù)比較簡單,直接舉例🌰
>>>left2=pd.DataFrame([[1.,2.],[3.,4.],[5.,6.]],index=['a','c','e'],columns=['Ohio','Nevada'])>>>right2=pd.DataFrame([[7.,8.],[9.,10.],[11.,12.],[13.,14.]],index=['b','c','d','e'],columns=['Missouri','Alabama'])>>>left2Ohio Nevada
a 1.02.0
c 3.04.0
e 5.06.0>>>right2 Missouri Alabama
b 7.08.0
c 9.010.0
d 11.012.0
e 13.014.0>>>left2.join(right2,how='outer')Ohio Nevada Missouri Alabama
a 1.02.0 NaN NaN
b NaN NaN 7.08.0
c 3.04.09.010.0
d NaN NaN 11.012.0
e 5.06.013.014.0>>>another=pd.DataFrame([[7.,8.],[9.,10.],[11.,12.],[16.,17.]],index=['a','c','e','f'],columns=['New York','Oregon'])>>>anotherNew York Oregon
a 7.08.0
c 9.010.0
e 11.012.0
f 16.017.0>>>left2.join([right2,another])Ohio Nevada Missouri Alabama New York Oregon
a 1.02.0 NaN NaN 7.08.0
c 3.04.09.010.09.010.0
e 5.06.013.014.011.012.0'''由于一些歷史原因(pandas版本過低),DataFrame的join方法進(jìn)行連接鍵上的左連接,完全保留左邊DataFrame的行索引。
它還支持在調(diào)用DataFrame的某一列上連接傳遞的DataFrame的索引:'''>>>left1=pd.DataFrame({'key':['a','b','a','a','b','c'],'value':range(6)})>>>right1=pd.DataFrame({'group_val':[3.5,7]},index=['a','b'])>>>left1key value
0 a 01 b 12 a 23 a 34 b 45 c 5