1. concate

df = pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True) """
(1)objs:对象,一般为df或者series
(2)axis:拼接方向,默认为0,行拼接,若axis=1,则为列拼接
(3)join:默认为outer表示并集,inner表示交集, left/right表示左右连接
(4)ignore_index=True:重建索引
(5)keys:创建层次化索引
"""

(1)两张表列数一致,只是需要将行数简单拼接时:pd.concat([df1,df2]),

效果df1.append(df2)。
(2)两张表行数一致,只需要列简单拼接时:pd.concate([df1,df2],axis=1),

效果pd.merge(df1,df2,left_index=True,right_index=True,how=‘outer’)。
(3)两张表按行拼接,只想保留列索引相同的列,则how=‘inner’。
(4)两张表按列拼接,只想保留行索引相同的行,则how=‘inner’。

2. merge

df =DataFrame.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)# innner: 默认的连接方式,共同的列必须完全相等
# left: 根据左边的dataframe确定共同列的保留值,右边缺失列的值赋为NaN
# right: 根据右边的dataframe确定共同列的保留值,左边缺失列的值赋为NaN# 多列合并
result = pd.merge(df1, df2, on=['B', 'C'], how='inner') # 采用left_on 和 right_on对两个列名不同的dataframe合并
result = pd.merge(df1, df2, left_on='A', right_on='D', how='inner')# 采用suffixes属性为合并的两个dataframe的相同的列设置合并后相同列名的后缀
result = pd.merge(df1, df2, on='B', how='outer', suffixes=('_df1', '_df2'))

(1)merge只能用于两张表的连接,若有多个,则需不断两两合并实现。
(2)两张表有相同内容的一列,根据这一列将两张表进行合并,合并表的列数等于两张数据表列数和减去连接键的数量

#样集1
df1=pd.DataFrame(np.arange(12).reshape(3,4),columns=['a','b','c','d'])
>>> df1a  b   c   d
0  0  1   2   3
1  4  5   6   7
2  8  9  10  11
#样集2
df2=pd.DataFrame({'b':[1,5],'d':[3,7],'a':[0,4]})
>>> df2b  d  a
0  1  3  0
1  5  7  4
#两张表df1和df2的列名有重叠,且重叠列的内容完全相同,直接用pd.merge(df1, df2)
pd.merge(df1,df2)
>>>a   b   c   d
0   0   1   2   3
1   4   5   6   7  

3. join

df =DataFrame.join(other, on=None, how='left', lsuffix=' ', rsuffix=' ', sort=False)
#样集1
left=pd.DataFrame({'key':['foo','bar1'],'lval':[1,2]})
>>>key  lval
0   foo     1
1  bar1     2
#样集2
right=pd.DataFrame({'key':['foo','bar'],'rval':[4,5]})
>>>key  rval
0  foo     4
1  bar     5
#列名和列内容均部分相同的表df1和df2进行基于列索引,列拼接
left.join(right.set_index('key'),on='key')
>>>key   lval  rval
0   foo     1   4.0
1   bar1    2   NaN
#样集3
left=pd.DataFrame({'key':['foo','bar1'],'val':[1,2]})
>>>key   val
0   foo     1
1   bar1    2
#样集4
right=pd.DataFrame({'key':['foo','bar'],'val':[4,5]})
>>>key  val
0  foo    4
1  bar    5
#列名相同,列内容部分相同的表df1和df2基于列索引进行列合并,必须用参数lsuffix='_l',rsuffix='_r'指定重名列的下标,否则报错
left.join(right.set_index('key'),on='key',lsuffix='_l',rsuffix='_r')
>>>key   val_l  val_r
0   foo     1    4.0
1   bar1    2    NaN
#特别注意,即使列名相同了,也必须用到' set_index(key)' 否则直接使用
left.join(right,on='key',lsuffix='_l',rsuffix='_r')
>>> ValueError: You are trying to merge on object and int64 columns. If you wish to proceed you should use pd.concat
#另外需明确,不指定'ON= '参数的情况下,JOIN是按行索引进行列拼接,不对列进行任何操作。
left.join(right,lsuffix='_l',rsuffix='_r')

(1)无重复列名的两个表基于行索引进行拼接,直接使用df1.join(df2),合并后的行数与df1相同,合并后的列数为df1+df2之和。

4. 总结

(1) 简单粗暴拼接用concate
(2)复杂拼接用merge

参考:

https://www.cnblogs.com/guxh/p/9451532.html

合并两个pd表

Pandas合并表格的方法总结相关推荐

  1. pandas 合并表格时出现unnamed列,和顺序被打乱的问题

    FutureWarning: Sorting because non-concatenation axis is not aligned. A future version of pandas wil ...

  2. pandas合并表格

    import pandas as pd # 依次读取多个相同结构的Excel文件并创建DataFrame dfs = [] #pd.read_csv读取csv文件,如果读取Excel就用pd.read ...

  3. php表格合并_合并表格怎么合并

    合并表格的方法:首先打开其中一个表格:然后点击"数据"并选择"来自XML数据导入":接着找到第二个表格打开,并点击第一个表格"Sheet1" ...

  4. pandas python csv_python:pandas合并csv文件的方法(图书数据集成)

    数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析. 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformatio ...

  5. python实现表格合并_Python实现合并excel表格的方法分析

    本文实例讲述了Python实现合并excel表格的方法.分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用 ...

  6. python csv合并单元格_python中合并表格的两种方法

    合并表格要注意的是设置表格的表头,也就是是将表格第一列设置为合并表格的索引,这样合并表格的时候就会合并两个表格第一列的元素相同的行. 方法一:使用join合并import numpy as np im ...

  7. append()方法_超详细教程 | pandas合并之append和concat

    ​ 本篇文章主要介绍了pandas中对series和dataframe对象进行连接的方法:pd.append()和pd.concat(),文中通过示例代码对这两种方法进行了详细的介绍,希望能对各位py ...

  8. excel如何把多张表合并成一个表_如何将多个excel表格合并成一个_excel多表合并到一种表格的方法...

    Excel是我们日常办公经常要用到的工具,有时候我们会制作非常多的Excel表格,为了方便管理,我们需要将这些表格合并到一起,那么如何将多个excel表格合并成一个呢?相信很多朋友都不太清楚,那么今天 ...

  9. 表格合并行的方法和单元格点击事件

    el-table部分 <el-table max-height="100%" @cell-click="cellClick":data="dat ...

最新文章

  1. [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt
  2. traceroute/tracert--获取网络路由路径
  3. Spring MVC,Ajax和JSON第2部分–服务器端代码
  4. 【Java】链表求解一元多项式加法
  5. 八、图形与图像处理(2)
  6. python数据分析实战案例logistic_Python机器学习随笔之logistic回归识别手写数字
  7. String,StringBuilder, StringBuffer
  8. c#中hook的初次尝试
  9. 学科前沿技术专题第六章
  10. 如何在IIS7或IIS7.5中导入导出站点及应用程序池.
  11. H - A Shooting Game
  12. java 中 集合类相关问题
  13. MyBatis第N+1种分页方式,全新的MyBatis分页
  14. 考研英语单词-近义词分类-Second Day
  15. win32 - 保存路径对话框(SelectFolderDialog)
  16. php 分数相同怎么排名,怎么算出成绩排名_学校班级成绩排名计算方法
  17. 蜂鸟无线LR43B无线射频接收模块调试记录
  18. 912计算机专业综合,西安交通大学2018年计算机考研814、912考试大纲
  19. 翁恺C语言课程中的问题
  20. 中国科学院计算机研究所李华,李华-中国科学院大学-UCAS

热门文章

  1. 交换机的工作模式:IVL和SVL
  2. 【深度学习】Fashion-MNIST数据集简介
  3. 教师招聘计算机面试说课稿,教师招聘面试常见问题_ _信息技术说课稿.doc
  4. OPenGL 基本知识(根据自己理解整理)
  5. java unrar 乱码_JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码
  6. 蓝桥杯大赛——练习系统登录
  7. spritekit 动画_使用SpriteKit在Swift中创建动画
  8. DDD的创新思想:开发即设计思想
  9. 微信网页扫码支付(公众号)JAVA实现
  10. 怎么把ppt文字大小设置一致_PPT滚动数字原来如此简单