dataframe常用操作_Pandas | Dataframe的merge操作,像数据库一样尽情join

点击上方蓝字,关注并星标,和我一起学技术。

c23c87111403f015a7af6f2bb71d6368.png

今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并。

常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起。第二种是我们新获取了一份数据集,想要扩充旧的数据集。这两种合并操作在我们日常的工作当中非常寻常,那么究竟应该怎么操作呢?让我们一个一个来看。

merge

首先我们来看dataframe当中的merge操作,merge操作类似于数据库当中两张表的join,可以通过一个或者多个key将多个dataframe链接起来。

我们首先来创建两个dataframe数据:

df1 = pd.DataFrame({'id': [1, 2, 3, 3, 5, 7, 6], 'age': range(7)})

df2 = pd.DataFrame({'id': [1, 2, 4, 4, 5, 6, 7], 'score': range(7)})
c79a213873ee75e17d173369e2b44787.png

我们可以看到这两个dataframe当中都有id这个字段,如果我们想要将它们根据id关联起来,我们可以用pd.merge函数完成:

f9867a7778914edb2874366f6d262de6.png

这里虽然我们没有指定根据哪一列完成关联,但是pandas会自动寻找两个dataframe的名称相同列来进行关联。一般情况下我们不这么干,还是推荐大家指定列名。指定列名很简单,我们只需要传入on这个参数即可。

02d76bf99b6dc6c4a82c48e37395a0d2.png

如果需要根据多列关联,我们也可以传入一个数组。但假如两个dataframe当中的列名不一致怎么办,比如这两个dataframe当中的一列叫做id,一列叫做number,该怎么完成join呢?

df1 = pd.DataFrame({'id': [1, 2, 3, 3, 5, 7, 6], 'age': range(7)})

df2 = pd.DataFrame({'number': [1, 2, 4, 4, 5, 6, 7], 'score': range(7)})

这个时候就需要用left_on指定左表用来join的列名,用right_on指定右表用来join的列名。

58553d42e71efcddafe7556221c7db02.png

谈到join,不得不提另外一个问题就是join的方式。我们都知道在数据库的表join操作当中我们通常的join方式有4种。分别是innner join,left join,right join和outer join。我们观察一下上面的结果会发现关联之后的数据条数变少了,这是因为默认的方式是inner join,也就是两张表当中都存在的数据才会被保留。如果是left join,那边左边当中所有的数据都会保留,关联不上的列置为None,同理,如果是right join,则右表全部保留,outer join则会全部保留。

join的方式选择通过how这个参数控制,比如如果我们想要左表保留,我们传入how='left'即可。

15f1a78e0886938e106221b8fa35cd88.png

除此之外,merge操作还有一些其他的参数,由于篇幅限制我们不一一介绍了,大家感兴趣可以去查阅相关文档。

数据合并

另外一个常用的操作叫做数据合并,为了和merge操作区分,我用了中文。虽然同样是合并,但是它的逻辑和merge是不同的。对于merge来说,我们需要关联的key,是通过数据关联上之后再合并的。而合并操作是直接的合并,行对行合并或者是列对列合并,是忽视数据的合并。

这个合并操作我们之前在numpy的介绍当中曾经也提到过,我们这里简单回顾一下。

首先我们先创建一个numpy的数组:

import numpy as np
arr = np.random.rand(3, 4)

之后呢,我们可以用concatenate函数把这个数组横着拼或者是竖着拼,默认是竖着拼:

22c6016cad5a0ce10f89e44a0572afbc.png

我们也可以通过axis这个参数让它变成横着拼:

6f154c597a5fe1eb6e1c654d7daf75f3.png

对于dataframe同样也有这样的操作,不过换了一个名字叫做concat。如果我们不指定的话会竖着拼接:

f61364d9a450c0e3810606687cb7eaf7.png

竖着拼接的时候会按照列进行对齐,如果列名对不上就会填充NaN。

通过axis参数我们可以让它横向拼接:

b837b2ea87ed34a121c051909d35d2f9.png

以上就是concat的基本用法了,除了基本用法之外,concat还有一些其他的应用,比如说处理index层次索引等等。只是这些用法相对来说比较小众,使用频率不高,就不赘述了。

今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、在看、点赞)。

- END -

8d2009c3e47d5cd3596e1bd732763461.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/265708.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.空间配置器

SGI 特殊的空间配置器 std::alloc 一般而言,我们习惯的C内存配置操作和释放操作是这样的 class Foo{…..} Foo* pf new Foo; delete pf; new包含两阶段操作 (1)调用 ::operator new 配置内存 (2)调用 Foo::Foo() …

Github的简单使用(网页版)

目录Git和GithubGithub基础概念注册Github账号创建仓库及文件新建仓库新建文件文件的编辑和删除编辑或修改文件删除文件文件的上传文件的查找及下载文件的查找文件的下载IssuesFork开源项目贡献流程Git和Github 什么是Git Git是一个免费、开源的版本控制软件 什么是版本控制…

常用到的正则表达式

2019独角兽企业重金招聘Python工程师标准>>> 常用的正则表达式 1、匹配只含有英文字母和阿拉伯数字 ^[a-zA-Z0-9-]$ 2、匹配电子邮件地址 ^[_a-z0-9-](\.[_a-z0-9-])*[a-z0-9-](\.[a-z0-9-])*$ 3、匹配中文字符 [\u4e00-\u9fa5] 4、匹配国内座机电话号码 (\d{3}-|\d…

CSDN绑定GitHub账号

目录1.点击自己头像进入个人中心2.点击账号设置,选择绑定三方账号3.选择GitHub绑定绑定成功,主页获取勋章1.点击自己头像进入个人中心 2.点击账号设置,选择绑定三方账号 3.选择GitHub绑定 绑定成功,主页获取勋章

My97DatePicker在asp.net项目中的使用

1、去官网下载 My97DatePicker 包 http://www.my97.net/ 2、比如实现如下图所示功能 2.1 先把下载来的包添加到解决方案 2.2 然后在页面引用css文件和js文件 <link href"My97DatePicker/skin/WdatePicker.css" rel"stylesheet" type"text/css"…

机械秒表的使用方法_让console.log()不再是你的唯一选项js日志输出6种方法

几乎所有的javascript开发者最常使用的日志打印调试api都是console.log(),其实还有很多的选项供我们选择&#xff0c;笔者下面就为大家一一介绍.一、console.table()console.table()是我非常建议大家去使用的方法&#xff0c;它可以接受JSON或数组并以表格格式打印&#xff0c;…

Git的安装(附安装包)

更多干货推荐可以去牛客网看看&#xff0c;他们现在的IT题库内容很丰富&#xff0c;属于国内做的很好的了&#xff0c;而且是课程刷题面经求职讨论区分享&#xff0c;一站式求职学习网站&#xff0c;最最最重要的里面的资源全部免费&#xff01;&#xff01;&#xff01;点击进…

【10.20校内测试】【小模拟】【无向图建树判奇偶环】【树上差分】

Solution 和后面两道题难度差距太大了吧&#xff01;&#xff01; 显然就只是个小模拟&#xff0c;注意判0就行了。 Code #include<bits/stdc.h> using namespace std;char s[100005];int main() {freopen("expression.in", "r", stdin);freopen(&qu…

微信(QQ)截图时,无法保留鼠标右键菜单选项内容

问题描述 按下右键后弹出菜单&#xff0c;再按下QQ截图热键"Ctrl&#xff0b;Alt&#xff0b;A"&#xff08;微信"Ctrl&#xff0b;A"&#xff09;时&#xff0c;却发现菜单不见了。 微信的解决方法 先按下"Alt"键不放&#xff0c;再按住&quo…

使用WebClient请求WCF REST服务

2019独角兽企业重金招聘Python工程师标准>>> 接上篇”WCF实现REST服务“&#xff0c;服务端有了&#xff0c;我们看看客户端怎么访问&#xff0c;由于JS跨域的限制&#xff0c;这里通过WebClient做在后台代理来访问&#xff0c;话不多说&#xff0c;直接上代码。 1…

Git的工作流程简介

目录Git的工作区域Git的基本流程1.将工作区的代码添加到暂存区2.将暂存区的文件提交到本地仓库3.将暂存区的文件提交到远程仓库Git的工作区域 Git的基本流程 图形化方式操作 命令行模式&#xff08;Linux系统常用&#xff09;操作 1.将工作区的代码添加到暂存区 查看文件状态使…

git常用配置(指令)

1、配置用户名和邮箱 (1) 指令设置 $ git config --global user.name "username" $ git config --global user.email johndoeexample.com (2) 修改配置文件.gitconfig 2、配置ssh key免密登录 (1) 生成密钥 $ ssh-keygen -t rsa -C 1046407517qq.com (2) 在github添加…

PG git pull

2019独角兽企业重金招聘Python工程师标准>>> remote: Counting objects: 347, done. remote: Compressing objects: 100% (159/159), done. remote: Total 159 (delta 136), reused 0 (delta 0) Receiving objects: 100% (159/159), 23.16 KiB, done. Resolving del…

c51单片机led奇数偶数亮_两STM32单片机串口通讯实验

一、实验思路连接两个STM32单片机的串口引脚&#xff0c;单片机A进行发送&#xff0c;单片机B进行接收。单片机B根据接收到单片机A的指令来点亮或熄灭板载LED灯&#xff0c;通过实验现象来验证是否通讯成功。二、实验器材两套STM32F103C8T6单片机开发板、ST-Link下载器、杜邦线…

Git本地仓库文件的创建、修改和删除

目录基本信息设置1.设置用户名2.设置用户名邮箱Git仓库操作介绍1.创建一个新的文件夹2.在文件内初始化git仓库&#xff08;创建git仓库&#xff09;3.向仓库中添加文件1.创建一个文件2.将文件添加到暂存区3.将暂存区添加到仓库4.修改仓库文件1.修改文件2.然后把文件添加到暂存区…

作业4

一.题目&#xff1a;求一个二维整数数组中最大子数组的和二.设计思想&#xff1a;假如有一个i行j列的二维数组&#xff0c;可以有正有负通过两个子函数实现(一.)通过上次的一位数组求最大值&#xff0c;可以先求出每一行最大连续子数组的和(二.)记下上下边界元素的下标(三.)每一…

C++的高效从何而来

2019独角兽企业重金招聘Python工程师标准>>> 前一段时间&#xff0c;实验室的一哥们突然跑过来跟我说&#xff0c;“我自己写了个C的快速排序&#xff0c;排了一个10000000个int的数组&#xff0c;貌似比C库中是qsort算法要快&#xff0c;咋回事&#xff1f;C的STL中…

Git本地仓库管理远程库(GitHub)——clone(下载)、commit(添加到本地仓库)、push(提交到远程仓库)、pull(拉取)操作

目录使用远程仓库的目的将本地仓库同步到git远程仓库1.克隆远程仓库(clone)2.新建一个文件3.将工作区的文件添加到暂存区4.将暂存区的文件添加到本地仓库(commit)5.提交(同步)到远程仓库(push)6.远程库拉取到本地库(pull)7.团队协作开发和跨团队协作开发(开源项目)使用远程仓库…

ps里面怎么插入流程图_学会这3个方法,5分钟能绘制出好看又高级的流程图

工作中&#xff0c;很多时候我们需要绘制流程图&#xff0c;有些小伙伴觉得流程图很难画&#xff0c;费时又耗力。那么今天小编就来给大家分享3种绘制流程图的方法&#xff0c;希望大家学会后&#xff0c;都能快速画出好看的流程图。下面就一起来看看吧~一、Excel绘制1.打开Sma…

oracle学习一二

最近在从事一个行业的测评项目&#xff0c;作为测评师来讲应当是正确的分工&#xff0c;有人负责网络安全测评&#xff0c;有人负责主机测评&#xff0c;有人负责管理测评等等。在测评一个oracle数据库的时候学习到了一点内容&#xff0c;在专业人士看来可能不足为奇&#xff0…