pandas DataFrame 的横向纵向拼接组合
concat 与其说是连接,更准确的说是拼接。就是把两个表直接合在一起。于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis 。
函数的具体参数是:
concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False)
objs 是需要拼接的对象集合,一般为列表或者字典
axis=0 是按照行拼接,拼接之后行数增加,列数也根据join来定,join=’outer’时,列数是两表并集。同理join=’inner’,列数是两表交集。
在默认情况下为纵向拼接,即axis=0,此时有
concat([df1,df2]) 等价于 df1.append(df2)
在axis=1 时为横向拼接 ,此时有
concat([df1,df2],axis=1) 等价于 merge(df1,df2,left_index=True,right_index=True,how='outer')
以上转自: https://blog.csdn.net/qq_30718387/article/details/72152461
应用举例:
df=pandas.DataFrame() df2=pandas.DataFrame() df['id']=[1,2,3,4]
df['name']=['zhang','chen','lee','wang'] df2['id']=[2,3,4,5]
df2['place']=['Shenzhen','Hongkong','NewYork','London']
df3=pandas.DataFrame({'id':[]})
用法1:把来自两个不同DataFrame的列,纵向拼接到一起,赋值给另一个DataFrame的列。
df3['id']=pandas.concat([df['id'],df2['id']],axis=0,ignore_index=True)
执行后,
df3['id']=[1,2,3,4,5,2,3,4,5]
用法2:两个DataFrame进行纵向拼接:
df4=pandas.concat([df,df2],axis=0,ignore_index=True)
执行后,df4=
index | id | name | place |
0 | 1 | zhang | NaN |
1 | 2 | chen | NaN |
2 | 3 | lee | NaN |
3 | 4 | wang | NaN |
4 | 2 | NaN | Shenzhen |
5 | 3 | NaN | HongKong |
6 | 4 | NaN | NewYork |
7 | 5 | NaN | London |
用法3:两个DataFrame进行横向拼接:
df4=pandas.concat([df,df2],axis=1,ignore_index=True)
执行后,df4=
index | 0 | 1 | 2 | 3 |
0 | 1 | zhang | 2 | Shenzhen |
1 | 2 | chen | 3 | HongKong |
2 | 3 | lee | 4 | NewYork |
3 | 4 | wang | 5 | London |
多个拼接还可以使用生成器:
dfs=[df1,df2,df3,df4,df5] df6=pandas.DataFrame() df6['id']=pd.concat([df['id'] for df in dfs])
pandas DataFrame 的横向纵向拼接组合的更多相关文章
- pandas.DataFrame学习系列1——定义及属性
定义: DataFrame是二维的.大小可变的.成分混合的.具有标签化坐标轴(行和列)的表数据结构.基于行和列标签进行计算.可以被看作是为序列对象(Series)提供的类似字典的一个容器,是panda ...
- 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现
首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...
- 打印datagridview内容 实现横向纵向分页(转)
网上找了很多打印的,只发现这个比较好,实现了横向纵向分页. 代码如下: using System;using System.Collections.Generic;using System.Text; ...
- Oracle横向纵向汇总
Oracle横向纵向汇总 有一张表test 如下, (NO 学生编号 ,cj 成绩) NO name KM CJ 001 张三 语文 80 001 张三 数学 86 001 张三 英语 75 0 ...
- 固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生>
固定表头,单元格td宽度自适应,多内容出现-横向纵向滚动条数据表格的<前世今生> 先上图例 & 无论多少数据--都完美! 背景:由于我司行业方向,需要很多数据报表,则t ...
- pandas.DataFrame的pivot()和unstack()实现行转列
示例: 有如下表需要进行行转列: 代码如下: # -*- coding:utf-8 -*- import pandas as pd import MySQLdb from warnings impor ...
- pandas DataFrame apply()函数(1)
之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方法自定义函数 pandas DataFrame 的 app ...
- pandas DataFrame apply()函数(2)
上一篇pandas DataFrame apply()函数(1)说了如何通过apply函数对DataFrame进行转换,得到一个新的DataFrame. 这篇介绍DataFrame apply()函数 ...
- 把pandas dataframe转为list方法
把pandas dataframe转为list方法 先用numpy的 array() 转为ndarray类型,再用tolist()函数转为list
随机推荐
- Visual Studio Code 缩放设置
Windows下的软件的操作都很类似,所以刚开始使用vs code的时候习惯性地使用Ctrl+鼠标滚轮进行缩放,然而在vs code上不管用. 在vs code中有两类缩放: 一.整体缩放:包括菜单栏 ...
- Java中常用七个阻塞队列的总结
Java队列总结 通过前面文章的学习,我们对Java中常用队列做了介绍.本文,咱们来对队列做个总结吧. 首先,我们介绍了现实生活中的实际场景(排队买票等),来告诉我们为什么需要使用队列. 队列是一种先 ...
- Centos7 team 绑定多网卡
1.nmcli connection show 查看所有的网络连接 nmcli connection show 接下来我们要使用 ens37 ens38 两个网卡绑定 , 绑定的网卡取名: agg-e ...
- .NET Core技术研究-通过Roslyn代码分析技术规范提升代码质量
随着团队越来越多,越来越大,需求更迭越来越快,每天提交的代码变更由原先的2位数,暴涨到3位数,每天几百次代码Check In,补丁提交,大量的代码审查消耗了大量的资源投入. 如何确保提交代码的质量和提 ...
- SpringCloudGateWay学习 之 从函数式编程到lambda
文章目录 前言: 函数式编程: 什么是函数式编程: 函数式编程的特点 lambda表达式: 核心: 函数接口: 方法引用: 类型推断: 变量引用: 级联表达式跟柯里化: 前言: 这一系列的文章主要是为 ...
- redux中间件的理解
redux的中间件就是用来处理reducer和actions之间应用,常用的中间件有redux-thunk,redux-sage.在redux中通过applyMiddleware方法使用中间件 使用例 ...
- FPGA学习心得汇总(手中写代码,心中有电路)
http://bbs.ednchina.com/BLOG_ARTICLE_2111172.HTM 任何的时序逻辑都可以转换为组合逻辑+D触发器来完成. FPGA内部主要三块:可编程的逻辑单元.可编程的 ...
- 可能是把 Java 接口讲得最通俗的一篇文章
读者春夏秋冬在抽象类的那篇文章中留言,"二哥,面试官最喜欢问的一个问题就是,'兄弟,说说抽象类和接口之间的区别?',啥时候讲讲接口呗!" 对于面向对象编程来说,抽象是一个极具魅力的 ...
- 04JAVA基础数组
概念 存储同一种数据类型的多种元素的容器 数组初始化 动态初始化 设定数组长度,系统自动分配默认值 int[] arr = new int[3]; 静态初始化 给定数组默认值,系统自动分配长度 int ...
- 以前的一些word的整理
LAMP部署 环境:虚拟机centos7 安装apache: 命令:yum install -y httpd (在执行这个命令时,可能会遇到运行yum时出现/var/run/yun.pid已被锁定,P ...