美文网首页
左连接-使用R/python实现两个数据的左连接

左连接-使用R/python实现两个数据的左连接

作者: 一车小面包人 | 来源:发表于2023-11-09 14:42 被阅读0次

背景:使用R或者python实现两个数据集的左连接,以此完成部分生信需求。

  • python实现
    python是我学的第一门编程语言,pandas是我最早接触的处理数据框的库。
    首先构建一个测试数据集:
import pandas as pd #'导入pandas库
data_1=pd.DataFrame({"Name":["chenxiangzhi","lianghui","wangling"],"age":[26,26,25]})
data_2=pd.DataFrame({"Name":["chenxiangzhi","lianghui","chenweiman"],"work":["yes","yes","yes"]})
dataframe.png

观察这两个数据框,它们有这样一些特征:
1.共有列名Name
2.共有列Name中部分值相同,都有 chengxiangzhilianghui,但数据data_1中的wanglingdata_2没有的;数据data_2中的chenweimandata_1没有的
3.除了共有列名Name外,每个数据表有自己独有的列名

某位老师就说过,这样的两个表单存在于一些常见的场景中,例如:
学校的管理系统中,语文课的成绩表单和数学课的表单如何拼接在一起?选修这两门课的学生名字部分重合,即一部分学生两门课都上,但有一些学生只上了语文课或者只上了数学课,那么反映在表单上,两个成绩表上学生的名字列只有部分相同,另一部分是不同的,除此外,一个表单反映的是语文成绩,而另一个表单则是数学成绩。

data_outer=pd.merge(data_1,data_2,how="outer")
data_outer
data_inner=pd.merge(data_1,data_2,how="inner")
data_inner
data_left=pd.merge(data_1,data_2,how="left")
data_left
data_right=pd.merge(data_1,data_2,how="right")
pd_merge.png

外连接能够将共有列的所有值拼接在一起,而没有的值会被赋值为NaN;
内连接只将共有列都有的值拼接在一起;
左连接只将共有列中左边表单的值拼接在一起;
右连接则是将共有列中右边表单的值拼接在一起。

  • R实现
    加载包library(dplyr)
    同样先构建测试数据表格:
library(dplyr)
data_1<-data.frame(Name=c("chengxiangzhi","lianghui","wangling"),age=c(26,26,25))
data_2<-data.frame(Name=c("chengxiangzhi","lianghui","chenweiman"),work=c("yes","yes","yes"))
data.frame.png
数据格式和之前一样,共有列为Name
dplyr.png
  • match方法
    这是一种类似于左连接,但是又更加灵活的方法。
data_1$work<-data_2[match(data_1$Name,data_2$Name),"work"]
data_1
match.png
match(a,b)的主要作用是返回向量a在向量b中的位置,在上图数据框data_2中:
data_2[match(data_1$Name,data_2$Name),]返回data_1中Name列在data_2中Name列的位置,并且在行的位置对数据框进行排序
data_2[match(data_1$Name,data_2$Name),"work"]提取排序后data_2中的work列
data_1$work<-data_2[match(data_1$Name,data_2$Name),"work"]将提取出来的列赋值给data_1的work列

match函数结合数据框的方法实现左连接的效果,但却比左连接更加灵活,它不需要两个数据框中共有列的列名一致,甚至可以一个是数据框的列而另一个是数据框的行名,都能实现匹配。

相关文章

  • 连接

    外连接分为内连接、左连接、右连接 内连接是根据某个条件连接两个表共有的数据; 左连接是根据某个条件以及左边的表连接...

  • SQL连接

    1、内连接:显式、隐式(两个表中关联字段相同的数据)显示: 隐式: 2、外连接:左外链接、右外连接a、左外连接:(...

  • python学习笔记-数据库06_连接查询

    连接查询可以实现多表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成连接查询可以分为:内连接查询左连接...

  • MySQL左连接与右连接

    先通过下面两个表展示一下左连接和右连接的结果 1.左连接与右连接 员工表: 学生表: 左连接 右连接 通过以上两个...

  • mysql 面试问题

    左连接和右连接有什么区别?左连接 left join ...... on:左表中的数据全部查询,右表中只查询...

  • left join and 和 where and 的区别

    问:left join on后and连接和where后用and连接 答:left join左连接,左表所有数据拼接...

  • 数据库的连接

    方式 数据库的连接方式有三种:内连接外连接左连接右链接 数据库 内连接 1.1.等值连接:在连接条件中使用等于号(...

  • MySQL --- SQL基础知识

    内连接与左(右)外连接的区别 总结: 内连接:查询左右表都有的数据,不要左/右中NULL的那一部分 左连接:即以左...

  • MYSQL 多表操作<六>

    1)承接上一节内容 2)多表查询内连接 数据如下 3)左外、右外连接查询 如下图 左外连接数据如下 右外连接数据如...

  • 组合两个表

    题目: 题目的理解: 使用左连接获取需要的字段 实现 提交

网友评论

      本文标题:左连接-使用R/python实现两个数据的左连接

      本文链接:https://www.haomeiwen.com/subject/knmcwdtx.html