Pandas包对多个数据表(DataFrame)的常用整合功能。

目录


merge 合并

  • pandas.merge可根据一个或多个键将不同DataFrame中的行合并起来
  • # 在未指定连接键的情况下,merge会将重叠列的列名当做键
    pd.merge(left, right) # 指定“on”作为连接键,left和right两个DataFrame必须同时存在“on”列,连接键也可N对N(少用)
    pd.merge(left, right, on="key")
    pd.merge(left, right, on=["key1", "key2"]) # 指定left的连接键为“lkey”,right的连接键为“rkey”
    pd.merge(left, right, left_on="lkey", right="rkey") # suffixes:用于追加到重叠列名的末尾,默认为("_x", "_y")
    pd.merge(left, right, on="key", suffixes=("_left", "_right")) # 指定连接方式:“inner”(默认),“left”,“right”,“outer”
    pd.merge(left, right, how="outer")
  • 多对多连接产生的是行的笛卡尔积
  • 常用方式:连接方式为“left”,right的连接键要唯一(去除重复值),通过right的数据补全left的数据

   索引上的合并(可用join代替,而且join更方便)

  • 当DataFrame的连接键位于其索引中,可以使用 left_index=True 和 right_index=True
  • # 索引和索引连接
    pd.merge(left, right, left_index=True, right_index=True) # "key"和索引连接
    pd.merge(left, right, left_on="key", right_index=True) # 层次化索引
    pd.merge(left, right, left_on=["key1", "key2"], right_index=True)

join 连接

  • DataFrame的join实例方法,是为了方便实现索引合并
  • # 用left的索引和right的索引进行merge
    left.join(right) # 用left的索引和right的“key”进行merge
    left.join(right, on="key") # 层次化索引
    left.join(right, on=["key1", "key"]) # join可以合并两张以上的表,而merge只能合并两张表
    left.join([right1, right2], how="outer")

concat  轴向连接

  • pandas.concat可以沿着一条轴将多个表对象堆叠到一起:因为模式how模式是“outer”
  • # 默认 axis=0 上下拼接,列column重复的会自动合并
    pd.concat([df1, df2], axis=0) # axis=1 左右拼接,行raw/index重复的会自动合并
    pd.concat([df1, df2], axis=1) # 忽略df1和df2原来的index,重新给新的DataFrame设置从0开始的index
    pd.concat([df1,df2], ignore_index=True)

append

  • 使用场景:表头一致的多张表,进行连接(上下连接)

    df1.append(df2).append(df3)

combin_first 数据填补

  • 使用场景:有两张表left和right,一般要求它们的表格结构一致,数据量也一致,使用right的数据去填补left的数据缺漏
  • 如果在同一位置left与right数据不一致,保留left的数据
    df1.combin_first(df2)

Pandas-多表操作的更多相关文章

  1. Pandas的基础操作(一)——矩阵表的创建及其属性

    Pandas的基础操作(一)——矩阵表的创建及其属性 (注:记得在文件开头导入import numpy as np以及import pandas as pd) import pandas as pd ...

  2. Pandas的拼接操作

    pandas的拼接操作 pandas的拼接分为两种: 级联:pd.concat, pd.append 合并:pd.merge, pd.join import pandas as pd import n ...

  3. (四)pandas的拼接操作

    pandas的拼接操作 #重点 pandas的拼接分为两种: 级联:pd.concat, pd.append 合并:pd.merge, pd.join 0. 回顾numpy的级联 import num ...

  4. 数据分析05 /pandas的高级操作

    数据分析05 /pandas的高级操作 目录 数据分析05 /pandas的高级操作 1. 替换操作 2. 映射操作 3. 运算工具 4. 映射索引 / 更改之前索引 5. 排序实现的随机抽样/打乱表 ...

  5. Mysql常用表操作 | 单表查询

    160905 常用表操作 1. mysql -u root -p 回车 输入密码   2. 显示数据库列表 show databases     3. 进入某数据库 use database data ...

  6. Sql Server系列:数据表操作

    表是用来存储数据和操作数据的逻辑结构,用来组织和存储数据,关系数据库中的所有数据都表现为表的形式,数据表由行和列组成.SQL Server中的数据表分为临时表和永久表,临时表存储在tempdb系统数据 ...

  7. 学习MySQL之单表操作(二)

    ##单表操作 ##创建表 CREATE TABLE t_employee( empno ), ename ), job ), MGR ), Hiredate DATE DEFAULT '0000-00 ...

  8. python——Django(ORM连表操作)

    千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...

  9. mysql数据表操作&库操作

    首先登陆mysql:mysql -uroot -proot -P3306 -h127.0.0.1 查看所有的库:show databases; 进入一个库:use database; 显示所在的库:s ...

  10. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

随机推荐

  1. Linux初学:(二)Shell环境与命令基础

    博客园(FOREVER_ENJOY):http://www.cnblogs.com/zyx1314/ 本文版权归作者所有:欢迎转载!请注明文章作者和原文连接 Shell是什么? 1. Shell作为应 ...

  2. Eclipse debug断点调试代码时出现source not found问题

    偶尔调试代码的时候会出现这种事情,之前并没有特别注意,今天稍微搜集一下相关资料: 1.跳转到的代码的确没有源码,下载源码后选择源码位置后便会正常显示源码. 2.源码和class文件不一致.即便勾选了a ...

  3. 2015.1.25 Delphi打开网址链接的几种方法

    Delphi打开网址链接的几种方法1.使用shellapi打开系统中默认的浏览器              首先需在头部引用 shellapi单元即在uses中添加shellapi,这里我们需要知道有 ...

  4. XLT格式化XML那点事(C#代码中的问题解决)(二)

    接上篇<XML通过XSL格式化的那点事(XML到自定义节点折叠显示)>,本文就如何将大的XLST分割成小文件和如何用C#将XML通过XSL生成HTML文件中的问题做下分析,避免有同样需求的 ...

  5. Java正则抓取email

    实现思路 1.使用Java.net.URL对象,绑定网络上某一个网页的地址 2.通过java.net.URL对象的openConnection()方法获得一个HttpConnection对象 3.通过 ...

  6. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection

    版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...

  7. Nginx负载均衡实践之一:基本实现

    由于现在的网站架构越来越大,基于互联网的用户也是日渐增长,所以传统的单机版服务器已经渐渐不能适应时代发展的需要.最近在和其他企业接触的过程中,发现对于互联网的经验尤为看重,所谓的互联网经验,其实就是指 ...

  8. 豪斯课堂K先生全套教程淘宝设计美工第一期+第四期教程(无水印)

    第一期课程包括 <配色如此简单> <配色的流程><对称之美>第二期课程包括 <字体的气质及组合><平衡及构图形式><信息的筛选与图片的 ...

  9. knockoutJS学习笔记02:jsRender模板引擎

    上一篇最后提到了模板,并尝试自己编写一个最简单版本:有些朋友可能用过 jqtmpl,这是一个基于jquery的模板引擎,不过它已经不再更新了,而且据说渲染速度比较慢.这里介绍另外一个模板引擎:jsRe ...

  10. JavaScript定时器原理分析

    .header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { t ...