轴向连接(concat)

Numpy

import numpy as np
import pandas as pd
from pandas import Series arr = np.arange(12).reshape(3,4)
arr array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]) # axis默认为行,想合并列可以设置axis=1
np.concatenate([arr,arr]) array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])

pandas对象的轴向连接

# 三个没有重叠的索引合在一起
s1 = Series([0,1],index=['a','b'])
s2 = Series([2,3,4],index=['c','d','e'])
s3 = Series([5,6], index=['f','g'])
# concat对象里面需要接受一个可迭代的对象
pd.concat([s1,s2,s3]) a 0
b 1
c 2
d 3
e 4
f 5
g 6
dtype: int64 # 如果传入axis=1,则多一个轴方向,会变成DataFrame
pd.concat([s1,s2,s3],axis=1) 0 1 2
a 0.0 NaN NaN
b 1.0 NaN NaN
c NaN 2.0 NaN
d NaN 3.0 NaN
e NaN 4.0 NaN
f NaN NaN 5.0
g NaN NaN 6.0 s4 = pd.concat([s1*5,s3])
s4 a 0
b 5
f 5
g 6
dtype: int64 # 默认合并的还是outer
pd.concat([s1,s4],axis=1) 0 1
a 0.0 0
b 1.0 5
f NaN 5
g NaN 6 # 默认合并的还是outer,如果想得到合并的交集,则指定join = 'inner'
pd.concat([s1,s4],axis=1,join='inner') 0 1
a 0 0
b 1 5 # 指定要合并的索引名,如果没有,则合并为NaN
pd.concat([s1,s4],axis=1,join_axes=[['a','b','c','e']]) 0 1
a 0.0 0.0
b 1.0 5.0
c NaN NaN
e NaN NaN #在合并行索引上创建一个层次化索引,keys参数
pd.concat([s1,s4],keys=['one','two','three']) one a 0
b 1
two a 0
b 5
f 5
g 6
dtype: int64 pd.concat([s1,s2,s3],axis=1) 0 1 2
a 0.0 NaN NaN
b 1.0 NaN NaN
c NaN 2.0 NaN
d NaN 3.0 NaN
e NaN 4.0 NaN
f NaN NaN 5.0
g NaN NaN 6.0 #如果沿着axis=1对Series进行合并,则keys就会成为DATAFrame的列名
pd.concat([s1,s2,s3],axis=1,keys=['one','two','three']) one two three
a 0.0 NaN NaN
b 1.0 NaN NaN
c NaN 2.0 NaN
d NaN 3.0 NaN
e NaN 4.0 NaN
f NaN NaN 5.0
g NaN NaN 6.0

DataFrame的concat操作

df1 = pd.DataFrame(np.arange(6).reshape(3,2),index=['a','b','c'],columns=['one','two'])
df1 one two
a 0 1
b 2 3
c 4 5 df2 = pd.DataFrame(5 + np.arange(4).reshape(2,2),index=['a','c'],columns=['three','four'])
df2 three four
a 5 6
c 7 8 # 合并列
pd.concat([df1,df2],axis=1) one two three four
a 0 1 5.0 6.0
b 2 3 NaN NaN
c 4 5 7.0 8.0 # 如果传入的不是列表而是一个字典,则字典的键就是层次化索引列名
pd.concat({'level1':df1,'level2':df2},axis=1) level1 level2
one two three four
a 0 1 5.0 6.0
b 2 3 NaN NaN
c 4 5 7.0 8.0 # names的命名是层次化索引的行标签,upper行对应level1,level2
pd.concat([df1,df2],axis=1,keys=['level1','level2'],names=['upper','lower']) upper level1 level2
lower one two three four
a 0 1 5.0 6.0
b 2 3 NaN NaN
c 4 5 7.0 8.0 df3 = pd.DataFrame(np.random.randn(3,4),columns=['a','b','c','d'])
df4 = pd.DataFrame(np.random.randn(2,3),columns=['b','d','a']) # 这样的行索引重复的难看要死,可以关闭了,ignore_index=True
pd.concat([df3,df4]) a b c d
0 0.649869 -0.332470 0.918562 -1.781167
1 -0.271012 0.702998 -2.164433 0.185556
2 0.279104 -0.846209 -0.366614 0.444451
0 -0.204010 -0.974424 NaN -2.215621
1 0.504930 0.490877 NaN 0.332790 #ingore_index启用后,行索引就会自增 pd.concat([df3,df4],ignore_index=True) a b c d
0 0.649869 -0.332470 0.918562 -1.781167
1 -0.271012 0.702998 -2.164433 0.185556
2 0.279104 -0.846209 -0.366614 0.444451
3 -0.204010 -0.974424 NaN -2.215621
4 0.504930 0.490877 NaN 0.332790

合并重叠数据(combine_first)

a = Series([np.nan,2.5,np.nan,3.5,4.5,np.nan],index=['f','e','d','c','b','a'])
a f NaN
e 2.5
d NaN
c 3.5
b 4.5
a NaN
dtype: float64 b = Series(np.arange(len(a),dtype=np.float64),index=['f','e','d','c','b','a'])
b f 0.0
e 1.0
d 2.0
c 3.0
b 4.0
a 5.0
dtype: float64 # where(条件,真值,假值),这里a数据集有null条件成立,故返回b的值
np.where(pd.isnull(a),b,a) array([0. , 2.5, 2. , 3.5, 4.5, 5. ]) a[2:]
d NaN
c 3.5
b 4.5
a NaN
dtype: float64 b[:-2]
f 0.0
e 1.0
d 2.0
c 3.0
dtype: float64 # 用a的数据填补b,如果有重复的以b为准
b[:-2].combine_first(a[2:]) a NaN
b 4.5
c 3.0
d 2.0
e 1.0
f 0.0
dtype: float64 # 用b的数据填补a,如果有重复的,以a为准
a[2:].combine_first(b[:-2]) a NaN
b 4.5
c 3.5
d 2.0
e 1.0
f 0.0
dtype: float64

Pandas合并数据集之concat、combine_first方法的更多相关文章

  1. Pandas合并数据集之merge、join方法

    合并数据集 pandas.merge 可根据一个或多个键将不同DataFrame中的行连接起来. pandas.concat 可以沿着一条轴将多个对象堆叠到一起. combine_first merg ...

  2. Python数据科学手册-Pandas:合并数据集

    将不同的数据源进行合并 , 类似数据库 join merge . 工具函数 concat / append pd.concat() 简易合并 合并高维数据 默认按行合并. axis=0 ,试试 axi ...

  3. pandas合并数据集-【老鱼学pandas】

    有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...

  4. pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集

    pandas对象中的数据可以通过一些内置的方式进行合并: pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来. pandas.concat可以沿着一条轴将多个对象堆叠 ...

  5. python merge、concat合并数据集

    数据规整化:合并.清理.过滤 pandas和python标准库提供了一整套高级.灵活的.高效的核心函数和算法将数据规整化为你想要的形式! 本篇博客主要介绍: 合并数据集:.merge()..conca ...

  6. Pandas 合并 concat

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

  7. MySQL把多个字段合并成一条记录的方法

    转:http://www.111cn.net/database/mysql/71591.htm MySQL把多个字段合并成一条记录的方法 在mysql中字段合并可以使用很多函数来实现,如可以利用 GR ...

  8. JS合并两个数组的方法

    JS合并两个数组的方法 我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况.比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合 ...

  9. python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)

    # python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...

随机推荐

  1. 接口测试基础——第3篇smtplib发送带图片的邮件

    smtplib发送邮件最后一篇,发送带图片的邮件: 大家可以去廖雪峰的网站看一下,下面的代码就是我跟着博客写的,哈哈,大家即使不明白为什么,也要多写两遍,记在心里,如果有不明白的地方可以留言,船长会第 ...

  2. idc市场

    机房 idc服务商 ============================== 电信1.古城热线-西部数据中心于2001年正式投入运营,有经济技术开发区和高新技术产业开发区两个核心机房高新路电信广场 ...

  3. 集合总结五(Hashtable的实现原理)

    一.概述 上一篇介绍了Java8的HashMap,接下来准备介绍一下Hashtable. Hashtable可以说已经具有一定的历史了,现在也很少使用到Hashtable了,更多的是使用HashMap ...

  4. 虚拟机安装及Oracle安装

    1.安装虚拟机(没难度,傻瓜装机) 新建虚拟机 自定义------下一步------- 稍后安装操作系统------下一步 下一步 下一步至完成 然后启动,就可以启动一个系统咯!!! 可以查一下虚拟机 ...

  5. java 各种循环遍历

    遍历方式选择: 实现了 RandomAccess 接口的 list,优先选择普通 for 循环 ,其次 foreach: 未实现 RandomAccess 接口的 list, 优先选择 iterato ...

  6. spring boot通过Interceptor和HandlerMethodReturnValueHandler实现统一处理为controller返回对象统计处理时间

    思路:实现思路都是基于Aop实现,方式上可以通过spring aop和spring mvc的aop机制都能实现. 通过Interceptor的可以实现为controller插入开始时间和执行结束时间, ...

  7. ID的故事

    随心所欲.这个时代比较中二吧,刚出国,也买了房,年纪轻轻的觉得自己好像很牛B的样子. 失败悲观的路人甲.大约是13年的时候,突遭重击,一下子悲观失望,死的心都有.为此买了那种自杀也会给赔偿的保险(买后 ...

  8. 将SQL for xml path('')中转义的字符正常显示

    在工作中出现的发送邮件的时候:因为邮件内容中有链接,并且多个拼接在一起的,于是用了for xml path().       但是,这样显示出来的链接时会将路径中的<,>,&符号转 ...

  9. Win10系统无法使用小米手机的远程管理功能

    今天想用电脑往手机传点东西,想到可以用小米手机的远程管理功能. 其实就是手机开了一个ftp服务,在电脑上访问手机ftp.没想到啊,居然出错了: 为啥呢,访问不了?我的电脑上文件和打印机共享都开了的. ...

  10. 小程序客服下发消息禁止后 session from 还有用吗?

    文章概要 1. 小程序下发政策调整分析 2. session from 数据还传到底三方了没?  1. 小程序下发政策调整分析 小程序客服功能下发策略调整                       ...