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

    相关推荐

    • 企业费用管理神器:9款费控系统精选

      本文介绍了9款费控系统:合思、金蝶云之家、明道云、管家婆、用友U8、AIrbase、Yokoy、SAP Concur、Expensify。 在企业管理中,传统的费用控制不仅费时费力,还容易出错,最终影响企业的财务健康和运营效率,而费控系统是一种有效的解决方案,可以优化费用管理流程,提升整体工作效率。…

      2024年7月23日
      1000
    • 数据库权限关系图表是什么

      数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

      2024年7月22日
      100
    • 诚信数据库是什么意思

      诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

      2024年7月22日
      000
    • 数据库期末关系代数是什么

      关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

      2024年7月22日
      500
    • mysql建立数据库用什么命令

      在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

      2024年7月22日
      100
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

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

    分享本页
    返回顶部