Pandas 通过 concat() 函数能够轻松地将 Series 与 DataFrame 对象组合在一起,函数的语法格式如下:

pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False)

参数说明如下所示:

参数名称 说明
objs 一个序列或者是Series、DataFrame对象。
axis 表示在哪个轴方向上(行或者列)进行连接操作,默认 axis=0 表示行方向。
join 指定连接方式,取值为{"inner","outer"},默认为 outer 表示取并集,inner代表取交集。
ignore_index 布尔值参数,默认为 False,如果为 True,表示不在连接的轴上使用索引。
join_axes 表示索引对象的列表。

concat()

concat() 函数用于沿某个特定的轴执行连接操作。下面让我们创建不同的对象,并对其进行连接。

  1. import pandas as pd
  2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
  3. 'B': ['B0', 'B1', 'B2', 'B3'],
  4. 'C': ['C0', 'C1', 'C2', 'C3'],
  5. 'D': ['D0', 'D1', 'D2', 'D3']},
  6. index=[0, 1, 2, 3])
  7. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  8. 'B': ['B4', 'B5', 'B6', 'B7'],
  9. 'C': ['C4', 'C5', 'C6', 'C7'],
  10. 'D': ['D4', 'D5', 'D6', 'D7']},
  11. #连接a与b
  12. print(pd.concat([a,b]))

输出结果:

    A   B   C   D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7

如果想把指定的键与 DataFrame 对象连接,您可以使用 keys 参数来实现。如下所示:

  1. import pandas as pd
  2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
  3. 'B': ['B0', 'B1', 'B2', 'B3'],
  4. 'C': ['C0', 'C1', 'C2', 'C3'],
  5. 'D': ['D0', 'D1', 'D2', 'D3']},
  6. index=[0, 1, 2, 3])
  7. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  8. 'B': ['B4', 'B5', 'B6', 'B7'],
  9. 'C': ['C4', 'C5', 'C6', 'C7'],
  10. 'D': ['D1', 'D2', 'D5', 'D6']},
  11. index=[2,3,4,5])
  12. #连接a与b,并给a,b连接一个指定的键
  13. print(pd.concat([a,b],keys=['x','y']))

输出结果:

      A   B   C   D
x 0  A0  B0  C0  D0
  1  A1  B1  C1  D1
  2  A2  B2  C2  D2
  3  A3  B3  C3  D3
y 2  A4  B4  C4  D1
  3  A5  B5  C5  D2
  4  A6  B6  C6  D5
  5  A7  B7  C7  D6

上述示中,可以看出行索引 index 存在重复使用的现象,如果想让输出的行索引遵循依次递增的规则,那么需要将 ignore_index 设置为 True。

  1. import pandas as pd
  2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
  3. 'B': ['B0', 'B1', 'B2', 'B3'],
  4. 'C': ['C0', 'C1', 'C2', 'C3'],
  5. 'D': ['D0', 'D1', 'D2', 'D3']},
  6. index=[0, 1, 2, 3])
  7. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  8. 'B': ['B4', 'B5', 'B6', 'B7'],
  9. 'C': ['C4', 'C5', 'C6', 'C7'],
  10. 'D': ['D1', 'D2', 'D5', 'D6']},
  11. index=[2,3,4,5])
  12. #连接a与b,设置 ignore_index 等于 True
  13. print(pd.concat([a,b],keys=['x','y'],ignore_index=True))

输出结果:

    A   B   C   D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D1
5 A5 B5 C5 D2
6 A6 B6 C6 D5
7 A7 B7 C7 D6

注意:此时的索引顺序被改变了,而且键 keys 指定的键也被覆盖了。

如果您想要沿着 axis=1 添加两个对象,那么将会追加新的列。

  1. import pandas as pd
  2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
  3. 'B': ['B0', 'B1', 'B2', 'B3'],
  4. 'C': ['C0', 'C1', 'C2', 'C3'],
  5. 'D': ['D0', 'D1', 'D2', 'D3']},
  6. index=[0, 1, 2, 3])
  7. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  8. 'B': ['B4', 'B5', 'B6', 'B7'],
  9. 'C': ['C4', 'C5', 'C6', 'C7'],
  10. 'D': ['D1', 'D2', 'D5', 'D6']},
  11. index=[4,5,6,7])
  12. #沿着 axis=1,连接a与b
  13. print(pd.concat([a,b],axis=1))

输出结果:

     A    B    C    D    A    B    C    D
0 A0 B0 C0 D0 NaN NaN NaN NaN
1 A1 B1 C1 D1 NaN NaN NaN NaN
2 A2 B2 C2 D2 NaN NaN NaN NaN
3 A3 B3 C3 D3 NaN NaN NaN NaN
4 NaN NaN NaN NaN A4 B4 C4 D1
5 NaN NaN NaN NaN A5 B5 C5 D2
6 NaN NaN NaN NaN A6 B6 C6 D5
7 NaN NaN NaN NaN A7 B7 C7 D6

append()

如果要连接 Series 和 DataFrame 对象,有一个最方便、快捷的方法,那就是 append() 方法。该方法沿着 axis=0 (行方向)进行操作。

  1. import pandas as pd
  2. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
  3. 'B': ['B0', 'B1', 'B2', 'B3'],
  4. 'C': ['C0', 'C1', 'C2', 'C3'],
  5. 'D': ['D0', 'D1', 'D2', 'D3']},
  6. index=[0, 1, 2, 3])
  7. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  8. 'B': ['B4', 'B5', 'B6', 'B7'],
  9. 'C': ['C4', 'C5', 'C6', 'C7'],
  10. 'D': ['D1', 'D2', 'D5', 'D6']},
  11. index=[4,5,6,7])
  12. #沿着 axis=0,使用 apppend()方法连接a与b
  13. print(a.append(b))

输出结果:

    A   B   C   D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D1
5 A5 B5 C5 D2
6 A6 B6 C6 D5
7 A7 B7 C7 D6

当然 append() 函数也可接收多个对象,示例如下:

  1. a= pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
  2. 'B': ['B0', 'B1', 'B2', 'B3'],
  3. 'C': ['C0', 'C1', 'C2', 'C3'],
  4. 'D': ['D0', 'D1', 'D2', 'D3']},
  5. index=[0, 1, 2, 3])
  6. b= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  7. 'B': ['B4', 'B5', 'B6', 'B7'],
  8. 'C': ['C4', 'C5', 'C6', 'C7'],
  9. 'D': ['D1', 'D2', 'D5', 'D6']},
  10. index=[4,5,6,7])
  11. c= pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
  12. 'B': ['B8', 'B9', 'B10', 'B7'],
  13. 'C': ['C9', 'C8', 'C7', 'C6'],
  14. 'D': ['D8', 'D5', 'D7', 'D6']},
  15. index=[8,9,10,11])
  16. print(a.append(b,c,a))

输出结果:

    A    B   C   D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
4 A4 B4 C4 D1
5 A5 B5 C5 D2
6 A6 B6 C6 D5
7 A7 B7 C7 D6
8 A4 B8 C9 D8
9 A5 B9 C8 D5
10 A6 B10 C7 D7
11 A7 B7 C6 D6
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3

pandas之concat链接操作的更多相关文章

  1. pandas的concat函数和append方法

    pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,keys=None, levels=None, nam ...

  2. Pandas | Dataframe的merge操作,像数据库一样尽情join

    今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe的合并. 常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起.第二种是我们新获取了一份数据集 ...

  3. pandas 之 concat

    本文摘自:http://pandas.pydata.org/pandas-docs/stable/merging.html 前提: ide: liuqian@ubuntu:~$ ipython 准备: ...

  4. 基于pandas数据预处理基础操作

    # -*- coding: utf-8 -*- import numpy as np import pandas as pd #一.创建数据 #1.通过传递一个list对象来创建一个Series,pa ...

  5. RxJava(八)concat符操作处理多数据源

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51568562 本文出自:[余志强的博客] 一.concat操作符概述 ...

  6. pandas数据结构之DataFrame操作

    这一次我的学习笔记就不直接用官方文档的形式来写了了,而是写成类似于“知识图谱”的形式,以供日后参考. 下面是所谓“知识图谱”,有什么用呢? 1.知道有什么操作(英文可以不看) 2.展示本篇笔记的结构 ...

  7. pandas数据结构之series操作

    阅读之前假定你已经有了python内置的list和dict的基础.这里内容几乎是官方文档的翻译版本.   概览: ​   原来的文档是在一个地方,那边的代码看起来舒服些   https://www.y ...

  8. Pandas 合并 concat

    pandas处理多组数据的时候往往会要用到数据的合并处理,使用 concat是一种基本的合并方式.而且concat中有很多参数可以调整,合并成你想要的数据形式. 1.axis(合并方向):axis=0 ...

  9. pandas 级联 concat append

    连接的一个有用的快捷方式是在Series和DataFrame实例的append方法.这些方法实际上早于concat()方法. 它们沿axis=0连接 #encoding:utf8 import pan ...

  10. Pandas的concat方法

    在此我用的concat作用是加入新的记录,存储数据来用过的,不知道数据量大时候,效率会怎样 # 使用pandas来保存数据 df1 = pd.DataFrame([poem], columns=['p ...

随机推荐

  1. vue+高德地图配置及添加marker

    1.首先在index.html中引入高德地图 <script type="text/javascript" src="https://webapi.amap.com ...

  2. Filbeat采集nginx-ingress日志

    一.创建configmap配置文件 注:filebeat6以上版本需要将prospectors改为inputs,paths下指定的nginx-ingress日志路径匹配模式以及hosts指定的kafk ...

  3. Linux_Shell脚本

    Shell脚本 shell基础 shell变量 shell扩展 shell基础 shell简介 1.什么是shell? shell是一种命令解释器 shell也是一种编程语言 shell,python ...

  4. Dubbo调用 Mybatis 实体类一对多时,报错

    添加fetchType="eager"属性 ,急加载 作为笔记,供个人参考

  5. linux查看所有的用户和组信息

    1.cat /etc/passwd    查看所有用户 2.cat /etc/passwd|grep 用户名,用于查找某个用户 3.cat /etc/group查看所有组信息 4.cat /etc/g ...

  6. C语言初级阶段5——函数2

    C语言初级阶段5--函数2 址传递 1.地址:在定义变量,数组,函数等等,系统会自动给分配他们的内存区域(地址),把这个数据放到这个地址上面. 2.&:&a 得到a的地址编号 3.*: ...

  7. centos6放行防火墙8080端口操作

    1. 进入防火墙文件: [ vi /etc/sysconfig/iptables ] 2. 放行8080端口: [ -A RH-Firewall-1-INPUT -m state --state NE ...

  8. swftools工具将pdf文件转换为swf文件 文字丢失

    开发客户网站时遇到了一个需求,客户要求后台上传pdf文件,前台能以翻书的形式直接访问. 首先想到的是使用js解决,用户访问前端页面时,php将文件路径发送给js,让js呈现出来翻书的效果.在网上百度了 ...

  9. YY播放器源码解析

    YY播放器使用Flutter编写的一个聚合播放器, 起因是看了 ZY-Player的源码, 发现实现挺有意思的, 也比较简单 地址: https://github.com/waifu-project/ ...

  10. SSH、SFTP、FTP、Telnet、SCP、TFTP协议的原理

    一.SSH协议1.什么是SSH?SSH全称 安全外壳协议(Secure Shell),,是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境. 如果一个用户从本地计算机,使用SSH ...