[小白系列][pandas基础]数据合并函数merge( )

merge()函数

merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

一、左右连接键名一样

import pandas as pd
df1=pd.DataFrame({'key':['a','b','a','b','b'],'value1':range(5)})
df2=pd.DataFrame({'key':['a','c','c','c','c'],'value2':range(5)})
display(df1,df2,pd.merge(df1,df2))
'''
pd.merge(df1,df2) ##以df1、df2中相同的列名key进行连接,默认how='inner', pd.merge(df1,df2,on='key',how='inner')
'''
#  公共部分,取交集
display(pd.merge(df1,df2,on='key',how='inner'))

#  全连接,取并集,没有的位置补NaN
display(pd.merge(df1,df2,how='outer') )

# 左连接,左边取全部,以左侧有的元素为主键,右边取部分,没有值则用NaN填充
display(pd.merge(df1,df2,how='left'))

# 右连接,右边取全部,以右侧的元素为主键,左边取部分,没有值则用NaN填充
pd.merge(df1,df2,how='right') 

二、左右连接键名不一样

如果两个DataFrame的左右连接键的列名不一样,可以用left_on,right_on来进行指定

# 左右连接键名不一样
# 如果两个DataFrame的左右连接键的列名不一样,可以用left_on,right_on来进行指定
df3=pd.DataFrame({'lkey':['a','b','a','b','b'],'data1':range(5)})
df4=pd.DataFrame({'rkey':['a','c','c','c','c'],'data2':range(5)})
display(df3,df4)
        
# 内连接,默认how='inner'        
display(pd.merge(df3,df4,left_on='lkey',right_on='rkey'))   

# 全连接
display(pd.merge(df3,df4,left_on='lkey',right_on='rkey',how='outer')) 

# 左连接
display(pd.merge(df3,df4,left_on='lkey',right_on='rkey',how='left'))  

# 右连接
display(pd.merge(df3,df4,left_on = 'lkey',right_on = 'rkey',how = 'right'))

三、索引为连接键

# 索引为连接键

```python
# 索引为连接键
df5=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=['v1','v2','v3','v4'])
df6=pd.DataFrame(np.arange(12,24,1).reshape(3,4),index=list('abd'),columns=['v5','v6','v7','v8'])
display(df5,df6)
display(pd.merge(df5,df6,left_index = True,right_index = True))

索引为连接键时的输出结果
第三种情况输出结果

发布了5 篇原创文章 · 获赞 5 · 访问量 131

猜你喜欢

转载自blog.csdn.net/KaelCui/article/details/105156974