Pandas合并表格的方法总结
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合并表格的方法总结相关推荐
- pandas 合并表格时出现unnamed列,和顺序被打乱的问题
FutureWarning: Sorting because non-concatenation axis is not aligned. A future version of pandas wil ...
- pandas合并表格
import pandas as pd # 依次读取多个相同结构的Excel文件并创建DataFrame dfs = [] #pd.read_csv读取csv文件,如果读取Excel就用pd.read ...
- php表格合并_合并表格怎么合并
合并表格的方法:首先打开其中一个表格:然后点击"数据"并选择"来自XML数据导入":接着找到第二个表格打开,并点击第一个表格"Sheet1" ...
- pandas python csv_python:pandas合并csv文件的方法(图书数据集成)
数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析. 两张表:ReaderInformation.csv,ReaderRentRecode.csv ReaderInformatio ...
- python实现表格合并_Python实现合并excel表格的方法分析
本文实例讲述了Python实现合并excel表格的方法.分享给大家供大家参考,具体如下: 需求 将一个文件夹中的excel表格合并成我们想要的形式,主要要pandas中的concat()函数 思路 用 ...
- python csv合并单元格_python中合并表格的两种方法
合并表格要注意的是设置表格的表头,也就是是将表格第一列设置为合并表格的索引,这样合并表格的时候就会合并两个表格第一列的元素相同的行. 方法一:使用join合并import numpy as np im ...
- append()方法_超详细教程 | pandas合并之append和concat
本篇文章主要介绍了pandas中对series和dataframe对象进行连接的方法:pd.append()和pd.concat(),文中通过示例代码对这两种方法进行了详细的介绍,希望能对各位py ...
- excel如何把多张表合并成一个表_如何将多个excel表格合并成一个_excel多表合并到一种表格的方法...
Excel是我们日常办公经常要用到的工具,有时候我们会制作非常多的Excel表格,为了方便管理,我们需要将这些表格合并到一起,那么如何将多个excel表格合并成一个呢?相信很多朋友都不太清楚,那么今天 ...
- 表格合并行的方法和单元格点击事件
el-table部分 <el-table max-height="100%" @cell-click="cellClick":data="dat ...
最新文章
- [20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt
- traceroute/tracert--获取网络路由路径
- Spring MVC,Ajax和JSON第2部分–服务器端代码
- 【Java】链表求解一元多项式加法
- 八、图形与图像处理(2)
- python数据分析实战案例logistic_Python机器学习随笔之logistic回归识别手写数字
- String,StringBuilder, StringBuffer
- c#中hook的初次尝试
- 学科前沿技术专题第六章
- 如何在IIS7或IIS7.5中导入导出站点及应用程序池.
- H - A Shooting Game
- java 中 集合类相关问题
- MyBatis第N+1种分页方式,全新的MyBatis分页
- 考研英语单词-近义词分类-Second Day
- win32 - 保存路径对话框(SelectFolderDialog)
- php 分数相同怎么排名,怎么算出成绩排名_学校班级成绩排名计算方法
- 蜂鸟无线LR43B无线射频接收模块调试记录
- 912计算机专业综合,西安交通大学2018年计算机考研814、912考试大纲
- 翁恺C语言课程中的问题
- 中国科学院计算机研究所李华,李华-中国科学院大学-UCAS
热门文章
- 交换机的工作模式:IVL和SVL
- 【深度学习】Fashion-MNIST数据集简介
- 教师招聘计算机面试说课稿,教师招聘面试常见问题_ _信息技术说课稿.doc
- OPenGL 基本知识(根据自己理解整理)
- java unrar 乱码_JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码
- 蓝桥杯大赛——练习系统登录
- spritekit 动画_使用SpriteKit在Swift中创建动画
- DDD的创新思想:开发即设计思想
- 微信网页扫码支付(公众号)JAVA实现
- 怎么把ppt文字大小设置一致_PPT滚动数字原来如此简单