一、merge函数用途
pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操作,得到一个新的数据集。
二、merge()函数的具体参数
用法:
1
|
DataFrame1.merge(DataFrame2, how = ‘inner ', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=(' _x ', ‘_y' ))
|
参数说明
参数 | 说明 |
---|---|
how | 默认为inner,可设为inner/outer/left/right |
on | 根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置) |
left_on | 左连接,以DataFrame1中用作连接键的列 |
right_on | 右连接,以DataFrame2中用作连接键的列 |
left_index | 将DataFrame1行索引用作连接键 |
right_index | 将DataFrame2行索引用作连接键 |
sort | 根据连接键对合并后的数据进行排列,默认为True |
suffixes | 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别 |
三、merge用法举例
创建两个数据框
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#利用字典dict创建数据框
dataDf1 = pd.DataFrame({ 'lkey' :[ 'foo' , 'bar' , 'baz' , 'foo' ],
'value' :[ 1 , 2 , 3 , 4 ]})
dataDf2 = pd.DataFrame({ 'rkey' :[ 'foo' , 'bar' , 'qux' , 'bar' ],
'value' :[ 5 , 6 , 7 , 8 ]})
print (dataDf1)
print (dataDf2)
>>>
lkey value
0 foo 1
1 bar 2
2 baz 3
3 foo 4
rkey value
0 foo 5
1 bar 6
2 qux 7
3 bar 8
|
内连接(Inner)
1
2
3
4
5
6
7
8
|
#inner链接
dataLfDf = dataDf1.merge(dataDf2, left_on = 'lkey' ,right_on = 'rkey' )
>>>
lkey value_x rkey value_y
0 foo 1 foo 5
1 foo 4 foo 5
2 bar 2 bar 6
3 bar 2 bar 8
|
右链接(Right)
1
2
3
4
5
6
7
8
9
|
#Right链接
dataDf1.merge(dataDf2, left_on = 'lkey' , right_on = 'rkey' ,how = 'right' )
>>>
lkey value_x rkey value_y
0 foo 1.0 foo 5
1 foo 4.0 foo 5
2 bar 2.0 bar 6
3 bar 2.0 bar 8
4 NaN NaN qux 7
|
全链接(Outer)
1
2
3
4
5
6
7
8
9
10
|
#Outer链接
dataDf1.merge(dataDf2, left_on = 'lkey' , right_on = 'rkey' , how = 'outer' )
>>>
lkey value_x rkey value_y
0 foo 1.0 foo 5.0
1 foo 4.0 foo 5.0
2 bar 2.0 bar 6.0
3 bar 2.0 bar 8.0
4 baz 3.0 NaN NaN
5 NaN NaN qux 7.0
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/MsSpark/article/details/83098468