IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pandas DataFrame中几种合并方式的区分(merge join concat) -> 正文阅读

[人工智能]pandas DataFrame中几种合并方式的区分(merge join concat)

在这里插入图片描述

在使用pandas时,由于有join, merge, concat几种合并方式,而自己又不熟的情况下,很容易把几种搞混。本文就是为了区分几种合并方式而生的。

文章目录


merge

merge用于左右合并(区别于上下堆叠类型的合并),其类似于SQL中的join,一般会需要按照两个DataFrame中某个共有的列来进行连接,如果不指定按照哪两列进行合并的话,merge会自动选择两表中具有相同列名的列进行合并(如果没有相同列名的列则会报错)。这里要注意用于连接的列并不一定只是一列。

用法

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
         left_index=False, right_index=False, sort=True,
         suffixes=('_x', '_y'), copy=True, indicator=False,
         validate=None)

ok,例:

>>> import pandas as pd
>>> df1 = pd.DataFrame({'A':list('abcd'), 'B':list('efgh'), 'C': list('ijkl')})
>>> df1
   A  B  C
0  a  e  i
1  b  f  j
2  c  g  k
3  d  h  l
>>> df2 = pd.DataFrame({'X':list('qwer'), 'Y':list('asdf'), 'C': list('ijkl')})
>>> df2
   X  Y  C
0  q  a  i
1  w  s  j
2  e  d  k
3  r  f  l
>>> df1.merge(df2) # 这里默认以两表的共有列C进行连接
   A  B  C  X  Y
0  a  e  i  q  a
1  b  f  j  w  s
2  c  g  k  e  d
3  d  h  l  r  f
  • merge中可以使用参数on选择共有的列,用在上面的例子中的话就是df1.merge(df2, on='C')
  • 如果两表中用于连接的列的列名不同,使用left_on, right_on选择两个表中用于连接的列
  • 此外使用how参数选择最终结果需要保存的内容,有四种方式inner, outer, left, right
    • inner表示只保存用于连接的两列所共有的值(也就是交集)
    • outer表示保存用于连接的两列中出现的所有值(也就是并集)
    • left表示只保存用于连接的左表的所有值对应的结果,如果某值只在右表的连接列中出现,那么就不会被保存
    • right与left相反
  • suffixes参数可以用于给两表的相同列名加上后缀,默认为(‘x’, ‘y’)
  • left_index为True时表示使用左表的index作为连接键,right_index类似

上面的参数就不一一举例展示了。

join

join比较简单,其用于将两表按照索引列进行合并,能使用的参数也相对比较少

DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

这里简单介绍一下参数:

  • other就是另一张表
  • on表示使用右表中的某一列和左表的index来连接
  • how和上面一样
  • lsuffix, rsuffix和上面一样,只是分开写了而已
  • sort默认为False即不排序,但是如果为True时表示按照合并时使用到的值进行排序(也就是两表的索引或者左表的索引+右表的某一列)

concat

concat的功能相对多一点,其一般用于堆叠,可以用于纵向和横向的堆叠,只需要对应地选择axis参数即可。在堆叠时如果要堆叠的方向有相同的列名(如果是横向那么就是索引名),那么会自动堆叠在一起,其余没有同名的列(或索引)就会根据使用的join参数决定去留。

pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, 
				names=None, verify_integrity=False, sort=False, copy=True)

参数:

  • 要注意的是concat传入的是一个列表,如pd.concat([df1, df2])这样
  • axis表示选择哪一个方向的堆叠,0为纵向(默认),1为横向
  • join,与上面的how类似
  • ignore_index表示当索引无意义时忽略索引进行堆叠
  • 其余先不介绍啦,用到的应该也不多

本文举例比较少,但是是将三者的区别写的比较详细,若是需要的话读者可以自行尝试一下,相信聪明的你肯定没问题啦!

参考:https://blog.csdn.net/brucewong0516/article/details/82707492
参考:https://pandas.pydata.org/pandas-docs/stable/index.html

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-07 12:01:51  更:2021-12-07 12:04:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年6日历 -2024/6/2 13:41:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码