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')
df = pd.merge(df1, df2, on='key', how='inner')
df = pd.merge(df1, df2, on='key', how='outer')
df = pd.merge(df1, df2, on='key', how='left')
df = pd.merge(df1, df2, on='key', how='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)
df = pd.merge(df1, df2, left_index=True, right_on='value')
df = pd.merge(df1, df2, 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')