横向拼接

import pandas as pd
import numpy as npdf1 = pd.DataFrame([['Tom','2001',98],['Jack','2002',63],['Lucy','2003',88],['Nick','2004',100]],columns=['姓名','学号','成绩'])df2 = pd.DataFrame([['Tom','2001','一班'],['Jack','2002','二班'],['Lucy','2003','二班'],['Anny','2005','一班']],columns=['姓名','学号','班级'])

重要参数介绍
- how:用来控制连接方式,可选inner(内连接),left(左连接),right(右连接),outer(外连接),默认选项为内连接
- on:指定基于某个共同列或某些共同列进行连接,默认选项为基于所有共同列进行连接
- left_on:如果连接时左右表的列名不一致,就不用on,而是指明左表列和右表列
- right_on:如果连接时左右表的列名不一致,就不用on,而是指明左表列和右表列
- left_index:如果是基于左表的索引,设置为True
- right_index:如果是基于右表的索引,设置为True

left_on可以和right_index一起使用,left_index可以和right_on一起使用

pd.merge(df1,df2,how='inner',on='学号')
  姓名_x 学号 成绩 姓名_y 班级
0 Tom 2001 98 Tom 一班
1 Jack 2002 63 Jack 二班
2 Lucy 2003 88 Lucy 二班
pd.merge(df1,df2,how='left',on='学号')
  姓名_x 学号 成绩 姓名_y 班级
0 Tom 2001 98 Tom 一班
1 Jack 2002 63 Jack 二班
2 Lucy 2003 88 Lucy 二班
3 Nick 2004 100 NaN NaN
pd.merge(df1,df2,how='right',on='学号')
  姓名_x 学号 成绩 姓名_y 班级
0 Tom 2001 98 Tom 一班
1 Jack 2002 63 Jack 二班
2 Lucy 2003 88 Lucy 二班
3 NaN 2005 NaN Anny 一班
pd.merge(df1,df2,how='outer',on='学号')
  姓名_x 学号 成绩 姓名_y 班级
0 Tom 2001 98 Tom 一班
1 Jack 2002 63 Jack 二班
2 Lucy 2003 88 Lucy 二班
3 Nick 2004 100 NaN NaN
4 NaN 2005 NaN Anny 一班
pd.merge(df1,df2,how='inner',on=['学号','姓名'])
  姓名 学号 成绩 班级
0 Tom 2001 98 一班
1 Jack 2002 63 二班
2 Lucy 2003 88 二班

纵向拼接

import pandas as pd
import numpy as npdf3 = pd.DataFrame([['Tom','2001',98],['Jack','2002',63],['Lucy','2003',88],['Nick','2004',100]],columns=['姓名','学号','成绩'])df4 = pd.DataFrame([['Hali','2006',99],['Jerry','2007',40],['Nick','2004',100]],columns=['姓名','学号','成绩'])
pd.concat([df3,df4])#需要拼接在一起的DataFrame需要写成列表形式
  姓名 学号 成绩
0 Tom 2001 98
1 Jack 2002 63
2 Lucy 2003 88
3 Nick 2004 100
0 Hali 2006 99
1 Jerry 2007 40
2 Nick 2004 100
pd.concat([df3,df4],ignore_index=True)#ignore_index选择True会舍弃原有索引,重新从零开始索引
  姓名 学号 成绩
0 Tom 2001 98
1 Jack 2002 63
2 Lucy 2003 88
3 Nick 2004 100
4 Hali 2006 99
5 Jerry 2007 40
6 Nick 2004 100
  • 重复行

默认不会删除重复行,如果需要删除,可以在拼接之后用drop_duplicates()

pd.concat([df3,df4],ignore_index=True).drop_duplicates()
  姓名 学号 成绩
0 Tom 2001 98
1 Jack 2002 63
2 Lucy 2003 88
3 Nick 2004 100
4 Hali 2006 99
5 Jerry 2007 40
  • 非共有列

会保留非公有列,对于没有对应数值会自动填充为Null

df5 = pd.DataFrame([['Tom','2001',98,85],['Jack','2002',63,94],['Lucy','2003',88,77],['Nick','2004',100,89]],columns=['姓名','学号','数学成绩','英语成绩'])df6 = pd.DataFrame([['Hali','2006',99,79],['Jerry','2007',40,86],['Money','2004',100,91]],columns=['姓名','学号','数学成绩','语文成绩'])pd.concat([df5,df6])
  姓名 学号 数学成绩 英语成绩 语文成绩
0 Tom 2001 98 85.0 NaN
1 Jack 2002 63 94.0 NaN
2 Lucy 2003 88 77.0 NaN
3 Nick 2004 100 89.0 NaN
0 Hali 2006 99 NaN 79.0
1 Jerry 2007 40 NaN 86.0
2 Money 2004 100 NaN 91.0

dataframe横向和纵向拼接相关推荐

  1. python图片横向合并_python实现图片横向和纵向拼接

    本文实例为大家分享了python实现图片横向和纵向拼接的具体代码,供大家参考,具体内容如下 直接上代码: # -*- coding:utf-8 -*- __author__ = 'ShawDa' fr ...

  2. python实现两张图片横向和纵向拼接

    本文实例为大家分享了python实现图片横向和纵向拼接的具体代码, 这里主要用Python扩展库pillow中Image对象的paste()方法把两张图片拼接起来供大家参考,具体内容如下: 一.代码: ...

  3. python numpy 横向、纵向拼接图片

  4. dataframe 上下拼接_pandas DataFrame 的横向纵向拼接组合

    concat 与其说是连接,更准确的说是拼接.就是把两个表直接合在一起.于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis . 函数的具体参数是: concat( ...

  5. python 多张图片进行横向与纵向的无损拼接,适用于图片宽高差不多的图片

    前言 python 进行多张图片横向和纵向的拼接,适用于图片宽高差不多的图片,因为横向拼接会将图片等比例放大到一样的高度在拼接,纵向拼接会将图片等比例放大到一样的宽度再拼接.如果图片分辨率相差太大,将 ...

  6. matlab 数组横向纵向拼接

    clear all; clc;ri0=1;shi0=11;fen0=12; shuo=ri0+shi0/24+fen0/(24*60); filepath='E:\夏季\观测\效率\'; dat=[f ...

  7. OpenCV-图像拼接(横向拼接纵向拼接)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 功能函数 // 图像拼接 cv::Mat ImageSplicing(vector<cv: ...

  8. HighNewTech:横向、纵向动图查看《Why资本寒冬》——根据中国四大行每年(2004年~2018年)贷款主要流向来看当下的资本寒冬

    High&NewTech:横向.纵向看资本寒冬--根据中国四大行每年(2004年~2018年)贷款主要流向来看当下的资本寒冬 导读 资本寒冬,并不代表没有机会,相反,好机会将会更加沉淀,带来的 ...

  9. element的滚动去掉横向_textarea去掉滚动条 textarea横向或纵向滚动条的去掉方法

    在IE下文本框textarea会显示滚动条(如下:) 去掉textarea横向或纵向滚动条办法: 可以通过overflow-x:hidden和overflow-y:hidden控制横向和纵向滚动条 要 ...

最新文章

  1. 套路、逻辑与思辨(道理的论证)
  2. UNIX再学习 -- 错误和警告
  3. WKWebView-填坑总结
  4. Tsinsen A1493 城市规划(DP + CDQ分治 + NTT)
  5. python数据拟合固定参数_如何将数据拟合到非理想二极管方程(隐式非线性函数)并检索参数 - python...
  6. C语言里面双分号是啥意思,问什么C程序里总是提示缺少分号;,而明明有分号?...
  7. linux 命令行管理,Linux命令行界面下的用户和组的管理
  8. 免费ftp网站服务器软件,免费ftp服务器软件,免费ftp服务器软件有哪些呢?好用推荐...
  9. linux下spark的python编辑_Linux下搭建Spark 的 Python 编程环境的方法
  10. python画雷达图-使用Python绘制雷达图
  11. java_oop_三大特性
  12. ubuntu 14.04 install teamviewer
  13. selenium滑块拖动验证(携程)
  14. 在这里,北上深成为“社科之城”
  15. 可持续时尚分论坛精彩回顾 | 第二届始祖数字化可持续发展峰会
  16. 《C++ Primer》第14章 14.3节习题答案
  17. MongoDB系列六(聚合).
  18. 基于FFmpeg的Java视频Mp4转GIF初探
  19. 北京移动宽带光猫 GM219-S 路由功能分离内置路由器改接外置路由器
  20. 带问题重读ijkPlayer

热门文章

  1. 磁盘管逻辑卷(LVM)
  2. Context-aware Attentional Pooling (CAP) for Fine-grained Visual Classification
  3. python plot画柱状图_matplotlib使用:画柱状图
  4. Python 代码实现ArcGis 标注Label转注记Annotation
  5. 用Python分析《令人心动的offer2》的13万条弹幕,网友们都在吐槽什么?
  6. 兔子与狐狸c语言,狐狸和兔子
  7. 通过bitset库实现sha256
  8. 2019年新版新媒体运营学习路线,附完整视频+工具+运营经验
  9. 面向对象(高级)章节练习题
  10. 【19C】logmnr参考