# 连接和修补concat、combine_first 沿轴的堆叠连接
# 连接concat
import pandas as pd
import numpy as np
s1 = pd.Series([1,2,3])
s2 = pd.Series([2,3,4])
s3 = pd.Series([1,2,3],index=['a','c','h'])
s4 = pd.Series([2,3,4],index=['b','e','d'])
print(s1)
print(s2)
print(pd.concat([s1,s2]))#直接堆接
print(pd.concat([s3,s4]).sort_index())#排序
print('-------')
#默认axis = 0,行+行 print(pd.concat([s1,s2],axis=1))
#当axis=0时,列+列 成为dataframe

结果:

0    1
1 2
2 3
dtype: int64
0 2
1 3
2 4
dtype: int64
0 1
1 2
2 3
0 2
1 3
2 4
dtype: int64
a 1
b 2
c 2
d 4
e 3
h 3
dtype: int64
-------
0 1
0 1 2
1 2 3
2 3 4
#连接方式 join  join_axs
s5 = pd.Series([1,2,4],index=['a','b','c'])
s6 = pd.Series([2,3,4],index=['b','c','d'])
print(s5)
print(s6)
print(pd.concat([s5,s6],axis=1))
print(pd.concat([s5,s6],axis=1,join='inner'))#两边同时存在
print(pd.concat([s5,s6],axis=1,join_axes=[['a','b','c']]))#以index = ['a','b','c']为基准去判断
#join_axes指定联合的index

结果:

a    1
b 2
c 4
dtype: int64
b 2
c 3
d 4
dtype: int64
0 1
a 1.0 NaN
b 2.0 2.0
c 4.0 3.0
d NaN 4.0
0 1
b 2 2
c 4 3
0 1
a 1 NaN
b 2 2.0
c 4 3.0
#层次索引
print(pd.concat([s5,s6],axis=1,keys=['one','two']))#覆盖列名
print('---')
print(pd.concat([s5,s6],axis=0,keys=['one','two']))

结果:

   one  two
a 1.0 NaN
b 2.0 2.0
c 4.0 3.0
d NaN 4.0
---
one a 1
b 2
c 4
two b 2
c 3
d 4
dtype: int64
#修补
df1 = pd.DataFrame([[np.nan,3,5],[-1,6,np.nan],[np.nan,7,np.nan]])
df2 = pd.DataFrame([[-42.6,np.nan,-8.2],[-5,1.6,4]],index=[1,2])
print(df1)
print(df2)
print(df1.combine_first(df2))#按照索引使用df2中的值填补df1z中缺失的内容
#根据index df1的空值被df2代替
#如果df2的index多余df1,则更新到df1上,比如index=['a',1] df1.update(df2)
print(df1)
#直接用df2的值覆盖df1

结果:

     0  1    2
0 NaN 3 5.0
1 -1.0 6 NaN
2 NaN 7 NaN
0 1 2
1 -42.6 NaN -8.2
2 -5.0 1.6 4.0
0 1 2
0 NaN 3 5.0
1 -1.0 6 -8.2
2 -5.0 7 4.0
0 1 2
0 NaN 3.0 5.0
1 -42.6 6.0 -8.2
2 -5.0 1.6 4.0

2018.03.27 pandas concat 和 combin_first使用的更多相关文章

  1. 2018.03.27 pandas duplicated 和 replace 使用

    #.duplicated / .replace import numpy as np import pandas as pd s = pd.Series([1,1,1,1,1,2,3,3,3,4,4, ...

  2. 【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】

    --------– 2018.03.27 更新--------- 便携版已更新,点此获取便携版 已知BUG:中文目录无法正常调试 用于cpptools 0.15.0插件的配置文件更新 新的launch ...

  3. 2018.03.27 python pandas merge join 使用

    #2.16 合并 merge-join import numpy as np import pandas as pd df1 = pd.DataFrame({'key1':['k0','k1','k2 ...

  4. 2018/03/27 每日一个Linux命令 之 cron

    Cron 用于配置定时任务. -- 环境为 Ubuntu16-04 -- 先说说怎么配置一个简单的定时任务.直观的可以看到效果. 之前在网上查找资料,对Shell编程不熟悉的实在是很头疼,走了不少弯路 ...

  5. 网易2018.03.27算法岗,三道编程题100%样例AC题解

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/8660814.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  6. 数据分析03 /基于pandas的数据清洗、级联、合并

    数据分析03 /基于pandas的数据清洗.级联.合并 目录 数据分析03 /基于pandas的数据清洗.级联.合并 1. 处理丢失的数据 2. pandas处理空值操作 3. 数据清洗案例 4. 处 ...

  7. 20172319 2018.03.27-04.05 《Java程序设计》第4周学习总结

    20172319 2018.03.27-04.05 <Java程序设计>第4周学习总结 教材学习内容总结 第四章 编写类 类与对象的回顾:对象是有状态的,状态由对象的属性值确定.属性由类中 ...

  8. 2018/03/31 每日一个Linux命令 之 date

    date 命令主要用于查看和修改时间和时区 -- 这里主要学习基本的查看和设置时间和时区的方法. 直接显示日期 date '+%D' 效果 vagrant@hong:~$ date '+%D' 03/ ...

  9. EZ 2018 03 16 NOIP2018 模拟赛(四)

    链接:http://211.140.156.254:2333/contest/64 我去掉了一百多分! 这次的题目怎么说呢,特别水,但是就是出现了一些很逗的错误导致炸裂. 最好笑的是SB的不只我一个: ...

随机推荐

  1. 使用window10系统搭建完善的Linux开发环境

    https://juejin.im/post/5d22e46ee51d45775746b9b1 导读 在使用window系统开发时由于系统环境和线上环境不一致可能导致各种问题,以及部分扩展库只支持li ...

  2. 关于ftp无法链接的情况

    首先查看ftp是否安装 systemctl status vsftpd 如果没有先安装 yum install vsftpd 然后启动 systemctl start vsftpd 如果有报错 Job ...

  3. rsyslog+loganalyzer日志服务器,无法添加报表模板解决

    loganalyzer搭建成功后,各方面功能都算正常但是发现不能创建报表模板,提示报错 mysql错误:'字段列表'中的未知列'Source1' mysql错误号:1054 解决方案:

  4. java面试(反射)05

    1.什么是反射 JAVA反射机制是在运行状态中,对于任意一个类,都能够获取这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取类信息以及动态调用对象内容就称为jav ...

  5. 文件上传 MIME类型检测

    简介 MIME(Multipurpose Internet Mail Extensions)多用途网络邮件扩展类型,可被称为Media type或Content type, 它设定某种类型的文件当被浏 ...

  6. LaunchScreen 设置启动图片出现的问题

    更换启动图片的时候出现了一系列的小问题,让人头疼,怀疑人生. 1.更换了图片,显示还是老的图片!  -->重启手机,clean Xcode 2.设置布局的时候,请务必要这么布局,很完美! 如果你 ...

  7. Tomcat网站上的core和deployer的区别

    8.5.13 Please see the README file for packaging information. It explains what every distribution(分布) ...

  8. npm 安装时 --save --dev 和 --save 区别

    一.模式 运行webpack命令时,一定要指定模式. webpack --mode developmentwebpack --mode production二.--save -dev --save:将 ...

  9. JPA学习(二、JPA_基本注解)

    框架学习之JPA(二) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...

  10. JUnit——单元测试

    写了个类,要给别人用,会不会有bug?怎么办?测试一下. JUnit可以测试JDBC.Servelet.Struts.Spring.Hibernate等等. 单元测试是开发人员的工作,测试人员负责测试 ...