- left:参与合并的左侧DataFrame;
- right:参与合并的右侧DataFrame;
- how:连接方式,有inner、left、right、outer,默认为inner;inner表示两个集合的交集,left表示以第一个集合为准做交集,right以第二个为准,outer取并集,不存在的元素标记为NaN
- on:指的是用于连接的列索引名称,必须存在于左右两个DataFrame中,如果没有指定且其他参数也没有指定,则以两个DataFrame列名交集作为连接键;
- left_on:左侧DataFrame中用于连接键的列名,这个参数左右列名不同但代表的含义相同时非常的有 用;
- right_on:右侧DataFrame中用于连接键的列名;
- left_index:使用左侧DataFrame中的行索引作为连接键;
- right_index:使用右侧DataFrame中的行索引作为连接键;#行索引,横向连接
- sort:默认为True,将合并的数据进行排序,设置为False可以提高性能;
- suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x', '_y');#x和y可以修改为想设置的名称
- copy:默认为True,总是将数据复制到数据结构中,设置为False可以提高性能;
- indicator:显示合并数据中数据的来源情况。
ep:
import pandas as pd
left = pd.DataFrame({'key1':['K0','K0','K1','K2'],
'key2':['K0','K1','K0','K1'],
'A':['A0','A1','A2','A3'],
'B':['B0','B1','B2','B3']})
right = pd.DataFrame({'key1':['K0','K1','K1','K2'],
'key2':['K0','K0','K0','K0'],
'C':['C0','C1','C2','C3'],
'D':['D0','D1','D2','D3']})
print(left)
print(right)
#how = 'inner' 'outer' 'left' 'right'
res = pd.merge(left, right,on = ['key1','key2'],how = 'right')
print(res)
key1 key2 A B
0 K0 K0 A0 B0
1 K0 K1 A1 B1
2 K1 K0 A2 B2
3 K2 K1 A3 B3
key1 key2 C D
0 K0 K0 C0 D0
1 K1 K0 C1 D1
2 K1 K0 C2 D2
3 K2 K0 C3 D3
key1 key2 A B C D
0 K0 K0 A0 B0 C0 D0
1 K1 K0 A2 B2 C1 D1
2 K1 K0 A2 B2 C2 D2
3 K2 K0 NaN NaN C3 D3
在right中以{K0,K0}、{K1,K0}、{K1,K0}、{K2,K0}的顺序在left中遍历,如果与{key1,key2}有交集,整行打印,在left中没有找到相同的,忽略left中的一行,继续遍历下一行。即right中有,left中没有,以right为准,left缺失的部分以NaN补齐。
indicator=True显示两个集合中哪个集合会进入交集,
也可以改名indicator='重合在哪',即将_merge改成'重合在哪'
key1 key2 A B C D _merge
0 K0 K0 A0 B0 C0 D0 both
1 K1 K0 A2 B2 C1 D1 both
2 K1 K0 A3 B3 C1 D1 both
3 K1 K0 A2 B2 C2 D2 both
4 K1 K0 A3 B3 C2 D2 both
5 K2 K0 NaN NaN C3 D3 right_only