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. springboot默认的json配置

    springboot默认的json配置 1.@JsonIgnore 返回前端时对应字段不进行序列化返回 public class User { @JsonIgnore private String n ...

  2. div隐藏、显示

    JS隐藏和显示div的方式有两种: 需要注意的是用JS设置div的属性,必须在ccs中设置对应属性,否则报错. 同理可以设置相同class,进行批量设置. display--隐藏后释放占用的页面空间. ...

  3. Android studio 使用dialog提示信息

    package com.example.androidtest2; import androidx.appcompat.app.AlertDialog;import androidx.appcompa ...

  4. uniapp中使用echarts点击图例与tooltips无反应

    只需要在项目main.js文件中加上 window.wx = {} // echarts中tooltips点击无反应与点击图例无反应解决方法 即可

  5. Navicat15激活

    1.下载Navicat for MySQL 15 https://www.navicat.com.cn/download/navicat-for-mysql 2.下载激活工具 注意:因某些限制,下载链 ...

  6. cesium 學習計劃

    上篇已经将cesium环境搭建完成,并且服务启动完成,进去后主要浏览 documents 文档和Sandcastle 示例. 学习计划:沙盒示例学习一遍,每个示例中的查看对应代码接口. 学习cesiu ...

  7. P3366 模板最小生成树

    题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz. 输入格式 第一行包含两个整数N,M,表示该图共有N个结点和M条无向边. 接下来M行每行包含三个整数 Xi,Yi,Zi,表 ...

  8. layui.dtree的学习,自定义扩展toolbar按钮(toolbarExt)

    学习layui.dtree请前往 http://www.wisdomelon.com/DTreeHelper/ 记录一下dtree的自定义扩展toolbar按钮(toolbarExt) html代码: ...

  9. sql年、季度、月的第一天

    SELECT dateadd(yy,datediff(yy,0,getdate()),0) select dateadd(qq,datediff(qq,0,getdate()),0) select d ...

  10. 【技术指北】通过SMB协议在iOS和Windows之间传输文件

    windows操作 新建文件夹 设置文件夹的属性,选择共享 设置高级共享,权限选择完全控制 选择共享,选择Everyone cmd - ipcofig,获取ipv4地址 iOS操作 打开文件管理器 选 ...