• 第四章. Pandas进阶—数据合并


    第四章. Pandas进阶

    4.6 数据合并

    数据合并主要使用的是Merge方法和Concat方法

    1.数据合并(merge函数)

    1).语法:

    pandas.merge(right,how=‘inner’, on=None, left_on=None, right_on=None, left_index=False, right_index=False... )
    
    • 1

    参数说明:
    right:合并对象,Series或DataFrame
    how:合并类型,可以是left(左合并), right(右合并), outer(外合并), inner(内合并)
    on:联接的列或者索引级别名称
    left_on:左数据集联接的列或者索引级别名称
    right_on:右数据集联接的列或者索引级别名称
    left_index:使用左数据集的索引作为连接键(bool类型)
    right_index:使用右数据集的索引作为连接键(bool类型)

    2).示例

    • 示例1:常规合并
    import pandas as pd
    
    pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
    pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
    
    df1 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet1')
    print(df1)
    print('*' * 50)
    
    df2 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet2')
    print(df2)
    print('*' * 50)
    
    df_merge1 = pd.merge(df1, df2, on='序号', how='left')
    print(df_merge1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果展示:
    在这里插入图片描述

    • 示例2:多对一的数据合并:
    import pandas as pd
    
    pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
    pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
    
    df1 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet1')
    print(df1)
    print('*' * 50)
    
    df2 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet2')
    print(df2)
    print('*' * 50)
    
    df_merge1 = pd.merge(df1, df2, on='序号')
    print(df_merge1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果展示:
    在这里插入图片描述

    • 示例3:多对多的数据合并:
    import pandas as pd
    
    pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
    pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
    
    df1 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet1')
    print(df1)
    print('*' * 50)
    
    df2 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet2')
    print(df2)
    print('*' * 50)
    
    df_merge1 = pd.merge(df1, df2, on='序号')
    print(df_merge1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    结果展示:
    在这里插入图片描述

    2.数据合并(Concat函数)

    1).语法:

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

    参数说明:
    objs:合并对象,Series或DataFrame
    axis:0:代表列;1:代表行;默认0
    join:inner:交集 outer:并集

    2).示例

    • 示例1:相同字段的表首尾相连
    import pandas as pd
    
    pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
    pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
    
    df1 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet1')
    print(df1)
    print('*' * 50)
    
    df2 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet2')
    print(df2)
    print('*' * 50)
    
    df_concat1 = pd.concat([df1, df2], keys=['Sheet1', 'Sheet2'])
    print(df_concat1)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    结果展示:
    在这里插入图片描述

    • 示例2:横向表对齐(行对齐)
    import pandas as pd
    
    pd.set_option('display.unicode.ambiguous_as_wide', True)  # 处理数据的列标题与数据无法对齐的情况
    pd.set_option('display.unicode.east_asian_width', True)  # 无法对齐主要是因为列标题是中文
    
    df1 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet1')
    print(df1)
    print('*' * 50)
    
    df2 = pd.read_excel('F:\\Note\\图书采购清单.xlsx', sheet_name='Sheet3')
    print(df2)
    print('*' * 50)
    
    df_concat1 = pd.concat([df1, df2], keys=['Sheet1', 'Sheet3'], axis=1)
    print(df_concat1)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    结果展示:
    在这里插入图片描述

  • 相关阅读:
    C#语法基础
    JAVA提取嵌套夹带文件之Apache Tika
    使用docker安装mysql数据库(超简单)
    数据结构单链表
    一场江湖恩怨从「聚合数据」说起——第五篇
    Redis 列表( List )
    一文读懂 Golang init 函数执行顺序
    【图像分割】基于matlab萤火虫算法图像聚类分割【含Matlab源码 2106期】
    【JVM】第四篇 垃圾收集器ParNew&CMS底层三色标记算法详解
    【Mysql系列】mysql中删除数据的几种方法
  • 原文地址:https://blog.csdn.net/weixin_45116749/article/details/127924415