首页 > 技术文章 > Pandas 的 merge 方法讲解及 how= inner/ outer/ left/ right 的连接方式演示

ykit 2020-03-02 20:51 原文


 merge 的使用

 

pd.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:左 DataFrame

  right:右 DataFrame

  how:连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’

  on:用于连接的列名,必须同时存在于左右两个DataFrame对象中

 

连接方式演示

0 数据准备

import pandas as pd

# 创建两个用于演示的DataFrame
X = pd.DataFrame({'name':['A','B','C','D'],'age':[1,2,3,4]})
Y = pd.DataFrame({'name':['A','B','E'],'age':[1,5,6]})

其中:

  A 同学在两个数据集中都存在,并且对应的 age 相同

  B 同学在两个数据集中都存在,但对应的 age 不同

  C D 两位同学只出现在 X 数据集中

  E 同学只出现在 Y 数据集中

1 inner 内连接

merge 默认的连接方式

以 name 列为基准,保留两个数据集中同时存在的样本,这些样本的其他特征都会保留

 2 outer 外连接

以 name 列为基准,保留 X Y 两个数据集里 name 中出现的所有值,这些样本的其他特征都会保留,不存在的特征会自动补充 nan

 

 3 left 左连接

保留左 DataFrame 中,name 列出现的所有值(单独出现在右 DataFrame 的 name 里的值会被去除),这些值在右 DataFrame 里对应的值也会保留

 

 4 right 右连接

保留右 DataFrame 中,name 列出现的所有值(单独出现在左 DataFrame 的 name 里的值会被去除),这些值在左 DataFrame 里对应的值也会保留

 

 

 

文字有些啰嗦,看代码示例 [略~]

推荐阅读