最近频繁处理表格数据,再次感受到了pandas的伟大。

pandas merge

pandas merge可根据一个键或者多个键将不同的DataFrame中的行连接起来。实现的是类似SQL或者关系型数据库的数据库连接操作。

数据库风格的DataFrame合并

一对多的合并

import pandas as pd
import numpy as np
df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],
'data1': range(7)})
df1

df2 = pd.DataFrame({'key': ['a', 'b', 'd'],'data2': range(3)})
df2

此时为一种一对多的合并。df1中有多个被标记为a和b的行,而df2中key列的每个值仅对应一行。直接对df1和df2调用merge。
没有指定用哪个列进行连接的话,默认将重叠的列的列名当作键。

pd.merge(df1, df2)


显式指定一下键:

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


如果两个对象,列名不同的话,可以分别进行指定:

df3 = pd.DataFrame({'lkey': ['b', 'b', 'a', 'c', 'a', 'a', 'b'],'data1': range(7)})
df3

df4 = pd.DataFrame({'rkey': ['a', 'b', 'd'],'data2': range(3)})
df4

pd.merge(df3, df4, left_on = 'lkey', right_on = 'rkey')

这种情况,去掉了df3中的c,以及df4中的d;因为默认情况下,merge做的是“inner”连接;结果中的键是交集。外连接是并集,组合了左连接和右连接的效果:

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

多对多的合并操作

df1 = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],'data1': range(6)})
df1

df2 = pd.DataFrame({'key': ['a', 'b', 'a', 'b', 'd'],'data2': range(5)})
df2

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

多对多连接产生的是笛卡尔积。左边是3个b行,右边有2个b行,最终结果就会有6个b行。

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

参考

  1. 《利用python进行数据分析》第七章:数据规整化:清理、转变、合并、重塑

pandas merge应用相关推荐

  1. Pandas——merge(合并)

    文章目录 1.前言 2.通过key合并 3.Indicator 4.根据index合并 5.解决overlapping的问题 1.前言 pandas中的merge和concat类似,但主要是用于两组有 ...

  2. [Python3]pandas.merge用法详解

    摘要 数据分析与建模的时候大部分时间在数据准备上,包括对数据的加载.清理.转换以及重塑.pandas提供了一组高级的.灵活的.高效的核心函数,能够轻松的将数据规整化.这节主要对pandas合并数据集的 ...

  3. Python科学计算之Pandas merge函数操作

    文章目录 Merge函数 Merge介绍 Merge操作 Merge函数 Merge介绍 pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操 ...

  4. pandas - merge 函数

    # All default pd.merge(left,right,how="inner",on=None,left_on=None,right_on=None,left_inde ...

  5. 数据分析处理库Pandas——merge操作

    有一列列名相同值也相同 有两列列名相同值也相同 按其中一列合并 按两列合并 有一列列名相同值也相同,有一列列名相同值不相同,按两列合并 列名相同值不相同的行删掉 保留所有行 保留所有行并显示合并后该值 ...

  6. python(numpy,pandas11)——pandas merge根据索引合并数据

    文章目录 前言 参数on 参数 index 参数indicator 参数 suffixes 前言 根据 莫烦Python的教程 总结写成,以便自己复习和使用,这里我就不哟林地挂原创了

  7. 盘点一道使用pandas.merge()和pandas.join()函数实战应用题目

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 寂寂花时闭院门,美人相并立琼轩. ...

  8. pandas -表的横向合并 纵向合并

    <Merge, join, and concatenate>笔记 PS默认情况下,所有合并函数生成文件的方式均是新生成,即不修改原DF/Series数据. 第一.常用的merge()函数. ...

  9. python能处理多大的数据-使用Python Pandas处理亿级数据

    在数据分析领域,最热门的莫过于Python和R语言,此前有一篇文章<别老扯什么Hadoop了,你的数据根本不够大>指出:只有在超过5TB数据量的规模下,Hadoop才是一个合理的技术选择. ...

  10. 【Python】merge:数据规整化:清理、转换、合并、重塑

    merge:数据规整化:清理.转换.合并.重塑 目录: 文章目录 @[toc] 一 合并数据集 1 数据库风格的DataFrame合并 2 索引上的合并 3 轴向连接 4 合并重叠数据 二 重塑和轴向 ...

最新文章

  1. 洛谷P4705 玩游戏(生成函数+多项式运算)
  2. Web应用程序中(VS2005+SP1)添加App_Code(转)
  3. NR 5G RRC连接重建
  4. socket编程中的异常处理
  5. boost::hana::default_用法的测试程序
  6. node作为php中转带参数,Nodejs中使用命令行如何进行传参(代码)
  7. 计算机视觉目标检测算法总结5——RCNN系列算法
  8. 五,通道之间的数据传输
  9. IDEA运行test出现 Failed to execute goal org.codehaus.mojo:exec-maven-plugin:16.0.0:exec (default-cli) on
  10. 【Vegas原创】Exchange报550 5.7.1 Unable to relay for …错误的分析
  11. oracle 日期改字符格式_oracle 日期转换格式
  12. 计算机进入端口模式命令提示符,Win10使用命令提示符删除端口占用方法Win10查看端口占用状态...
  13. php短信验证码接口免费,[php短信验证码接口]PHP 短信验证码
  14. java对接微信代金券功能
  15. Luogu P3369 【模板】普通平衡树
  16. IE浏览器打开github点击code无响应
  17. 流氓软件卷土重来 8749上演黑吃黑
  18. 电子书管理软件Calibre使用
  19. VB/VBA的变量,竟还有这些秘密
  20. 在计算机桌面如何切换成大图标,win7系统桌面图标怎么设置大小 win7电脑桌面图标大小更改方法...

热门文章

  1. c#初学者记录(1)
  2. synchronized锁机制 之 代码块锁(转)
  3. 【LOJ】#2532. 「CQOI2018」社交网络
  4. [JLOI2008] CODES
  5. Vue音乐项目笔记(三)
  6. Log4j具体使用实例
  7. (转)apple-touch-icon-precomposed 和 apple-touch-icon属性区别
  8. wamp环境下php命令运行时出现错误:无法启动此程序,因为计算机中丢失OCI.dll。尝试重新安装该程序以解决此问题...
  9. 【转】从简单的 F# 表达式构建并发应用程序
  10. 【实践】BiLSTM上的CRF,用命名实体识别任务来解释CRF(1)