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)
参数 | 含义 |
---|---|
left | |
right | |
on=[] | 根据哪几列进行合并 |
left_on | |
right_on | |
how=‘left’/‘right’/‘inner’/‘outer’ | 左外连接、右外连接、内连接、外连接 |
indicator | 参数为True、False、Str,其中若为Str,则表示indicator这一列的列名是啥 |
left_index, right_index | 默认是按照列的形式,使用这俩,可以改成使用行的形式 |
suffix | 给重复列添加后缀,以示区分 |
suffix
英 /'sʌfɪks/ 美 /'sʌfɪks/
v. 添后缀
n. 后缀,词尾
on=[]
使用哪一列
和sql中的自然连接差不多,结果去除重复列,但不去除重复行
import numpy as np
import pandas as pd
d1 = pd.DataFrame({'B': [1, 2, 3, 4],
'A': ['a', 'b', 'c', 'd'],
'key':['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
'B': ['a', 'b', 'd', 'e', 'a'],
'key':['k0', 'k1', 'k3', 'k4', 'k0']})
print(pd.merge(d1, d2, on='key'))
import numpy as np
import pandas as pd
d1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ['b', 'a', 'c', 'd'],
'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
'B': ['a', 'b', 'd', 'e', 'a'],
'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print(pd.merge(d1, d2, on=['key', 'B']))
how
连接的方式
import numpy as np
import pandas as pd
d1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ['b', 'a', 'c', 'd'],
'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
'B': ['a', 'b', 'd', 'e', 'a'],
'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print()
print(pd.merge(d1, d2, on=['key', 'B'], how='left')) # 左外连接
print(pd.merge(d1, d2, on=['key', 'B'], how='right')) # 右外连接
print(pd.merge(d1, d2, on=['key', 'B'], how='outer')) # 外连接
indicator
在结果中专门多出一列,来表示在merge时,是 left 还是 right 有数据
import pandas as pd
d1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ['b', 'a', 'c', 'd'],
'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
'B': ['a', 'b', 'd', 'e', 'a'],
'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print()
print(pd.merge(d1, d2, on=['key', 'B'], how='left', indicator=True)) # 左外连接
print(pd.merge(d1, d2, on=['key', 'B'], how='right', indicator='indicate')) # 右外连接
left_index, right_index
也不知道具体是咋用的
import pandas as pd
d1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ['a', 'a', 'c', 'd'],
'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
'B': ['a', 'b', 'd', 'e', 'a'],
'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print(d2)
print()
print(pd.merge(d1, d2, left_index=True, right_index=True, how='inner'))
suffixes=[’’, ‘’]
import numpy as np
import pandas as pd
d1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': ['a', 'a', 'c', 'd'],
'key': ['k0', 'k1', 'k2', 'k3']})
d2 = pd.DataFrame({'C': [1, 2, 4, 5, 1],
'B': ['a', 'b', 'd', 'e', 'a'],
'key': ['k0', 'k1', 'k3', 'k4', 'k0']})
print(d1)
print(d2)
print()
print(pd.merge(d1, d2, left_index=True, right_index=True, how='inner', suffixes=['_left','_right']))