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. 关于js数组方法filter()

    1. filter() 都是数组方法,这个方法和forEach()的方法的区别又是什么呢? 2. 先说结论 filter() 和 forEach() 都是遍历数组的方法,甚至它们匿名函数的形参都是一样 ...

  2. JavaScript常见事件记录

    JavaScript常见事件记录 onblur: 元素失去焦点 onfocus: 元素获得焦点 onchange: 用户改变域的内容 onclick: 鼠标点击某个对象 ondblclick: 鼠标双 ...

  3. uniapp+uView搜索列表变颜色

    首先看一下页面效果: <template> <view class="page"> <b-nav-bar title="公司多维图" ...

  4. Alibaba Cloud Linux 3.2104 64位安装mysql5.6.45

    1 .安装cmake wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz tar -zxvf cmake-2.8.10.2.tar.g ...

  5. 学习使用数据库SQLServer (一)

    小记一下学习使用数据库时遇到的问题 1.建表时未设置主键约束名,此时删表主键会遇到困难,不能简单使用 ALTER TABLE NAME DROP CONSTRAINT 约束名: 而是要先找到数据表中主 ...

  6. OSIDP-线程-04

    进程和线程 进程具有两个相互独立的特点: 1.资源所有权:进程包括存放进程映像的虚拟地址空间,具有对资源的控制权. 2.调度/执行:进程具有运行状态和优先级,是可被 OS 调度和分派的实体. 通常将分 ...

  7. Sql Server函数全解

    --系统函数 create database sample_db; use sample_db; create table student ( i_sid int primary key identi ...

  8. Matlab %陆

    第六章 MATLAB IN ENGINEERING Polynomial Differentiation多项式微分  %幂级数 f(x) = x^3-2x-5; p = [1 0 -2 -5]  %自 ...

  9. (粗糙版)DeptDao,Service

    DeptDao package com.javasm.dao; import com.javasm.bean.Dept; import com.javasm.util.JDBCUtils; impor ...

  10. 博弈论练习4 Calendar Game(SG函数)

    题目链接在这里:D-Calendar Game_牛客竞赛博弈专题班组合游戏基本概念.对抗搜索.Bash游戏.Nim游戏习题 (nowcoder.com) 这题网上有关于奇偶性来找规律的做法,有点人类智 ...