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
随机推荐
- 如何使用thrift 服务引擎组件
在本文中将介绍如果通过thrift 组件集成到surging 微服务引擎中,然后可以选择dotnetty 或thrift作为服务远程调用RPC,也可以通过其它语言的thrift 调用surging 服 ...
- 数位dp H - F(x) HDU - 4734
http://acm.hdu.edu.cn/showproblem.php?pid=4734 一般数位dp表示的是数的性质,这个题目也是一样,但是我们求出来的是一个函数的值,怎么把这个值转化成一类数, ...
- Git 获取远程仓库指定分支内容
1. 在本地一个空的文件夹中 git init (生成本地仓库) 2. 在刚刚的文件夹中随便建立一个文件 ,git add . (为了生成分支)(提交到暂存区) 3. git commit -m'1 ...
- VSCode最强助攻
VSCode最强助攻 VS Code是前端界必备的开发工具.页面仔小杨简单介绍几款高效.好用的插件,让原本单薄的VS Code如虎添翼,开发效率倍增. vscode-icons vscode-icon ...
- 自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码
一.什么是PO模式 全称:page object model 简称:POM/PO PO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性! 主要分三层: 1.基础层BaseP ...
- 浅析微软的网关项目 -- ReverseProxy
浅析微软的网关项目 ReverseProxy Intro 最近微软新开了一个项目 ReverseProxy ,也叫做 YARP(A Reverse Proxy) 官方介绍如下: YARP is a r ...
- flink流处理从0到1
一.DataStream API之Data Sources(消费者之数据源) 介绍: source是程序的数据源输入,你可以通过StreamExecutionEnvironment.addSource ...
- Zkeys:低门槛、易操作的智能云管理系统
ZKEYS系统是一个功能强大的智能化管理系统,目前国内最大的IDC业务管理系统之一.功能模块涵盖用户中心系统.财务系统.工单系统.备案系统和云服务器.服务托管器.虚拟主机等产品的弹性在线购买及及时开通 ...
- leeCode刷题 1078
给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 firs ...
- Amaze UI学习笔记——JS学习历程一
1.自定义事件 (1)一些组件提供了自定义事件,命名方式为{事件名称}.{组件名称}.amui,用户可以查看组件文档了解.使用这些事件,如: $('#myAlert').on('close.alert ...