python中DataFrame数据合并merge()和concat()方法怎么用

    merge()

    1.常规合并

    ①方法1

    指定一个参照列,以该列为准,合并其他列。

    import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],                    'num1': [120, 101, 104],                    'num2': [110, 102, 121],                    'num3': [105, 120, 113]})df2 = pd.DataFrame({'id': ['001', '002', '003'],                    'num4': [80, 86, 79]})print(df1)print("=======================================")print(df2)print("=======================================")df_merge = pd.merge(df1, df2, on='id')print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    ②方法2

    要实现该合并,也可以通过索引来合并,即以index列为基准。将left_index 和 right_index 都设置为True
    即可。(left_index 和 right_index 都默认为False,left_index表示左表以左表数据的index为基准, right_index表示右表以右表数据的index为基准。)

    import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],                    'num1': [120, 101, 104],                    'num2': [110, 102, 121],                    'num3': [105, 120, 113]})df2 = pd.DataFrame({'id': ['001', '002', '003'],                    'num4': [80, 86, 79]})print(df1)print("=======================================")print(df2)print("=======================================")df_merge = pd.merge(df1, df2, left_index=True, right_index=True)print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    相比方法①,区别在于,如图,方法②合并出的数据中有重复列。

    重要参数

    pd.merge(right,how=‘inner’, on=“None”, left_on=“None”, right_on=“None”, left_index=False, right_index=False )

    参数 描述
    left 左表,合并对象,DataFrame或Series
    right 右表,合并对象,DataFrame或Series
    how 合并方式,可以是left(左合并), right(右合并), outer(外合并), inner(内合并)
    on 基准列 的列名
    left_on 左表基准列列名
    right_on 右表基准列列名
    left_index 左列是否以index为基准,默认False,否
    right_index 右列是否以index为基准,默认False,否

    其中,left_index与right_index 不能与 on 同时指定。

    合并方式 left right outer inner

    准备数据‘

    新准备一组数据:

    import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],                    'num1': [120, 101, 104],                    'num2': [110, 102, 121],                    'num3': [105, 120, 113]})df2 = pd.DataFrame({'id': ['001', '004', '003'],                    'num4': [80, 86, 79]})print(df1)print("=======================================")print(df2)print("=======================================")

    python中DataFrame数据合并merge()和concat()方法怎么用

    inner(默认)

    使用来自两个数据集的键的交集

    df_merge = pd.merge(df1, df2, on='id')print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    outer

    使用来自两个数据集的键的并集

    df_merge = pd.merge(df1, df2, on='id', how="outer")print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    left

    使用来自左数据集的键

    df_merge = pd.merge(df1, df2, on='id', how='left')print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    right

    使用来自右数据集的键

    df_merge = pd.merge(df1, df2, on='id', how='right')print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    2.多对一合并

    import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],                    'num1': [120, 101, 104],                    'num2': [110, 102, 121],                    'num3': [105, 120, 113]})df2 = pd.DataFrame({'id': ['001', '001', '003'],                    'num4': [80, 86, 79]})print(df1)print("=======================================")print(df2)print("=======================================")

    python中DataFrame数据合并merge()和concat()方法怎么用

    如图,df2中有重复id1的数据。

    合并

    df_merge = pd.merge(df1, df2, on='id')print(df_merge)

    合并结果如图所示:

    python中DataFrame数据合并merge()和concat()方法怎么用

    依然按照默认的Inner方式,使用来自两个数据集的键的交集。且重复的键的行会在合并结果中体现为多行。

    3.多对多合并

    如图表1和表2中都存在多行id重复的。

    import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '002', '002', '003'],                    'num1': [120, 101, 104, 114, 123],                    'num2': [110, 102, 121, 113, 126],                    'num3': [105, 120, 113, 124, 128]})df2 = pd.DataFrame({'id': ['001', '001', '002', '003', '001'],                    'num4': [80, 86, 79, 88, 93]})print(df1)print("=======================================")print(df2)print("=======================================")

    python中DataFrame数据合并merge()和concat()方法怎么用

    df_merge = pd.merge(df1, df2, on='id')print(df_merge)

    python中DataFrame数据合并merge()和concat()方法怎么用

    concat()

    pd.concat(objs, axis=0, join=‘outer’, ignore_index:bool=False,keys=None,levels=None,names=None, verify_integrity:bool=False,sort:bool=False,copy:bool=True)

    参数 描述
    objs Series,DataFrame或Panel对象的序列或映射
    axis 默认为0,表示列。如果为1则表示行。
    join 默认为”outer”,也可以为”inner”
    ignore_index 默认为False,表示保留索引(不忽略)。设为True则表示忽略索引。

    其他重要参数通过实例说明。

    1.相同字段的表首位相连

    首先准备三组DataFrame数据:

    import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],                    'num1': [120, 114, 123],                    'num2': [110, 102, 121],                    'num3': [113, 124, 128]})df2 = pd.DataFrame({'id': ['004', '005'],                    'num1': [120, 101],                    'num2': [113, 126],                    'num3': [105, 128]})df3 = pd.DataFrame({'id': ['007', '008', '009'],                    'num1': [120, 101, 125],                    'num2': [113, 126, 163],                    'num3': [105, 128, 114]})print(df1)print("=======================================")print(df2)print("=======================================")print(df3)

    python中DataFrame数据合并merge()和concat()方法怎么用

    合并

    dfs = [df1, df2, df3]result = pd.concat(dfs)print(result)

    python中DataFrame数据合并merge()和concat()方法怎么用

    如果想要在合并后,标记一下数据都来自于哪张表或者数据的某类别,则也可以给concat加上 参数keys

    result = pd.concat(dfs, keys=['table1', 'table2', 'table3'])print(result)

    python中DataFrame数据合并merge()和concat()方法怎么用

    此时,添加的keys与原来的index组成元组,共同成为新的index。

    print(result.index)

    python中DataFrame数据合并merge()和concat()方法怎么用

    2.横向表合并(行对齐)

    准备两组DataFrame数据:

    import pandas as pddf1 = pd.DataFrame({'num1': [120, 114, 123],                    'num2': [110, 102, 121],                    'num3': [113, 124, 128]}, index=['001', '002', '003'])df2 = pd.DataFrame({'num3': [117, 120, 101, 126],                    'num5': [113, 125, 126, 133],                    'num6': [105, 130, 128, 128]}, index=['002', '003', '004', '005'])print(df1)print("=======================================")print(df2)

    python中DataFrame数据合并merge()和concat()方法怎么用

    当axis为默认值0时:

    result = pd.concat([df1, df2])print(result)

    python中DataFrame数据合并merge()和concat()方法怎么用

    横向合并需要将axis设置为1

    result = pd.concat([df1, df2], axis=1)print(result)

    python中DataFrame数据合并merge()和concat()方法怎么用

    对比以上输出差异。

    • axis=0时,即默认纵向合并时,如果出现重复的行,则会同时体现在结果中

    • axis=1时,即横向合并时,如果出现重复的列,则会同时体现在结果中。

    3.交叉合并

    result = pd.concat([df1, df2], axis=1, join='inner')print(result)

    python中DataFrame数据合并merge()和concat()方法怎么用

    感谢各位的阅读,以上就是“python中DataFrame数据合并merge()和concat()方法怎么用”的内容了,经过本文的学习后,相信大家对python中DataFrame数据合并merge()和concat()方法怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

    文章标题:python中DataFrame数据合并merge()和concat()方法怎么用,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/28497

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    亿速云的头像亿速云认证作者
    上一篇 2022年9月21日 下午11:07
    下一篇 2022年9月21日 下午11:08

    相关推荐

    • windows驱动精灵检测不到显卡驱动如何解决

      解决方法: 方法一: 可能很多小伙伴在安装驱动的时候没有弄清楚自己的型号。 32位的驱动是无法装在64位上的。 小伙伴们应该尝试重新安装驱动。 方法二: 驱动太过老旧也是无法检测到的。 使用驱动精灵进行一下检测。 查看驱动是否需要进行更新。 1、进入驱动精灵,点击“硬件检测”。 2、如果驱动需要升级…

      2022年9月10日
      93700
    • windows驱动精灵怎么备份

      驱动精灵驱动备份: 1、打开驱动精灵,点击“百宝箱”。 2、在百宝箱中选择“驱动备份”。 3、点击“修改文件路径”。 4、选择文件的路径,并选择相应的备份设置,点击“确定”。 5、在上方点击“一键备份”即可。 “windows驱动精灵怎么备份”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业…

      2022年9月13日
      53700
    • mysql存储引擎之间的区别有哪些

      mysql存储引擎之间的区别:1、MyISAM不支持事务,不支持行级锁,而InnoDB则支持事务和行级锁;2、InnoDB支持MVCC,支持外键,而MyISAM不支持MVCC和外键。 千万级数据并发如何处理?进入学习 本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3…

      2022年8月30日
      60300
    • Redis有序集合zset知识点有哪些

      redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。 不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分 到较高分的方式排序集合中的成员。 集合的成员是少数的,但是评分是可以重复的。 因为元素是有序的,所以你可以很快的…

      2022年9月21日
      74000
    • C++怎么实现两个线程交替打印

      首先简单搭一个框架,让两个线程先尝试实现交替打印。 //实现两个线程交替打印#include <iostream>#include <thread>using namespace std;int main(void){ int n = 100; int i = 0; //创建…

      2022年8月27日
      76500
    • mysql支持外键吗

      mysql支持外键。在MySQL中,外键主要用来建立主表与从表的关联关系,可以为两个表的数据建立连接,约束两个表中数据的一致性和完整性;当主表删除某条记录时,从表中与之对应的记录也必须有相应的改变。一个表可以有一个或多个外键,外键可以为空值,若不为空值,则每一个外键的值必须等于主表中主键的某个值;且…

      2022年6月29日
      61800
    • word页码不连续突然断页怎么设置

      word页码不连续突然断页设置方法: 1、首先进入word文档,并点击上方的插入。 2、然后在菜单内找到点击“页码”选项。 3、在选项中可以看到页码点击。 4、随后在起始页码的后面输入1。 5、最后点击下方的确定保存即可。 读到这里,这篇“word页码不连续突然断页怎么设置”文章已经介绍完毕,想要掌…

      2022年9月20日
      1.7K00
    • windows deepl如何卸载

      deepl卸载方法 1、点击控制面板。 2、点击“程序和功能” 3、右键想要卸载的软件,卸载maya的这里就右键maya。 4、点击卸载即可。 以上就是“windows deepl如何卸载”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如…

      2022年9月26日
      1.6K00
    • windows vc运行库介绍及常见问题怎么解决

      vc运行库是干嘛的 答:vc运行库主要是用于软件的运行支持。 1、vc运行库是使用microsoft visual studio编写的一系列.dll文件合集。 2、因此vc运行库主要服务于一些同样使用类似语言编写的软件或游戏。 3、相信很多朋友都遇到过打开软件出现弹窗提示错误代码,无法启动的问题。 …

      2022年9月20日
      85800
    • windows驱动精灵intel显卡dch驱动异常如何解决

      解决方法: 1、右击“此电脑”,点击“管理”。 2、选择左侧任务栏的“设备管理器”。 3、点击右侧任务栏“显示适配器”的下拉,选择“更新驱动程序”。 4、点击下方的“浏览我的计算机以查找驱动程序软件”。 5、接着点击“让我从计算机上的可用驱动程序列表中选取”。 6、选择“Microsoft 基本显示…

      2022年9月13日
      60200
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

    工作日9:30-21:00在线

    分享本页
    返回顶部