Pandas.merge() 连接合并函数

2020-03-12  本文已影响0人  沧海2122537190

基础语法

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

语法参数说明:

参数 介绍 默认值 设定值
left 需要合并的左侧DataFrame -- --
right 需要合并的右侧DataFrame或者有列名的Series -- --
how 连接两个DataFrame的方式 inner inner;outer;left;right
on 用于连接的列名,必须为两个DataFrame同时存在的列名 -- --
left_on 用于连接的左侧DataFrame列名 -- --
right_on 用于连接的右侧DataFrame列名 -- --
left_index 将左侧的行索引用作其连接键 False True;False
right_index 将右侧的行索引用作其连接键 False True;False
sort 根据连接键对合并后的数据进行排列 False True;False
suffixes 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别 (‘_x’, ‘_y’) --
copy 是否避免重复数据 True True;False
indicator 指示符 False True;False
validate 0.21.0版中的新功能,检查合并是否为指定的类型 None one_to_one或1:1,one_to_many或 1:m,many_to_one或m:1,many_to_many或m:m

用法示例

1、right为Series

df1 = pd.DataFrame({'key': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
s1 = pd.Series(['a', 'c', 'd', 'e'])
s1.name = 'key'
df = pd.merge(df1, s1, on='key')
right为Series

2、连接方式(how)

#需要操作的DataFrame
df1 = pd.DataFrame({'key': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['a', 'c', 'd', 'e'], 'value': [5, 6, 7, 8]})
DataFrame

df = pd.merge(df1, df2,on='key')

how为空

df = pd.merge(df1, df2, on='key', how='inner')

inner

df = pd.merge(df1, df2, on='key', how='outer')

outer

df = pd.merge(df1, df2, on='key', how='left')

left

df = pd.merge(df1, df2, on='key', how='right')

right

3、 连接键名称不同(left_on, right_on)

df1 = pd.DataFrame({'lkey': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'rkey': ['a', 'c', 'd', 'e'], 'value': [5, 6, 7, 8]})
df = pd.merge(df1, df2, left_on='lkey', right_on='rkey')
DataFrame
merge

4、sort 合并后是否按key排序

df1 = pd.DataFrame({'key': ['c', 'b', 'a', 'd'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['c', 'a', 'd', 'b'], 'value': [5, 6, 7, 8]})
df = pd.merge(df1, df2, on='key', sort=True)
df = pd.merge(df1, df2, on='key', sort=False)
sort=True
sort=False或省略sort

5、left_inde, right_index

df1 = pd.DataFrame({'key': ['c', 'b', 'a', 'd'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['c', 'a', 'e', 'd'], 'value': [5, 4, 3, 2]})

df = pd.merge(df1, df2, left_index=True, right_index=True)

left_index=True, right_index=True

df = pd.merge(df1, df2, left_index=True, right_on='value')

left_index=True, right_on='value'

df = pd.merge(df1, df2, left_on='value', right_index=True)

left_on='value', right_index=True

6、suffixes

df1 = pd.DataFrame({'key': ['a', 'b', 'c', 'd'], 'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['a', 'c', 'd', 'e'], 'value': [5, 6, 7, 8]})
df = pd.merge(df1, df2, on='key')
df = pd.merge(df1, df2, on='key', suffixes=('1', '2'))
suffixes 默认值(‘_x’, ‘_y’) ('1', '2')
上一篇下一篇

猜你喜欢

热点阅读