zoukankan      html  css  js  c++  java
  • pandas 做合并操作-merge函数

    merge

    pandas的merge方法提供了一种类似于SQL的内存链接操作,官网文档提到它的性能会比其他开源语言的数据操作(例如R)要高效。

    merge的参数

    on:列名,join用来对齐的那一列的名字,用到这个参数的时候一定要保证左表和右表用来对齐的那一列都有相同的列名。

    left_on:左表对齐的列,可以是列名,也可以是和dataframe同样长度的arrays。

    right_on:右表对齐的列,可以是列名,也可以是和dataframe同样长度的arrays。

    left_index/ right_index: 如果是True的haunted以index作为对齐的key

    how:数据融合的方法。

    sort:根据dataframe合并的keys按字典顺序排序,默认是,如果置false可以提高表现。

    merge的默认合并方法:
        merge用于表内部基于 index-on-index 和 index-on-column(s) 的合并,但默认是基于index来合并。
    

    1.1 复合key的合并方法

    使用merge的时候可以选择多个key作为复合可以来对齐合并。
    

    1.1.1 通过on指定数据合并对齐的列

    In [41]: left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
       ....:                      'key2': ['K0', 'K1', 'K0', 'K1'],
       ....:                      'A': ['A0', 'A1', 'A2', 'A3'],
       ....:                      'B': ['B0', 'B1', 'B2', 'B3']})
       ....: 
    
    In [42]: right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
       ....:                       'key2': ['K0', 'K0', 'K0', 'K0'],
       ....:                       'C': ['C0', 'C1', 'C2', 'C3'],
       ....:                       'D': ['D0', 'D1', 'D2', 'D3']})
       ....: 
    
    In [43]: result = pd.merge(left, right, on=['key1', 'key2'])

    这里写图片描述 
    没有指定how的话默认使用inner方法。

    how的方法有:

    left

    只保留左表的所有数据

    In [44]: result = pd.merge(left, right, how='left', on=['key1', 'key2'])
    • 1

    这里写图片描述

    只保留右表的所有数据

    In [45]: result = pd.merge(left, right, how='right', on=['key1', 'key2'])
    • 1

    这里写图片描述

    outer

    保留两个表的所有信息

    In [46]: result = pd.merge(left, right, how='outer', on=['key1', 'key2'])
    • 1

    这里写图片描述

    inner

    只保留两个表中公共部分的信息

    In [47]: result = pd.merge(left, right, how='inner', on=['key1', 'key2'])
    • 1

    这里写图片描述

    1.2 indicator

    v0.17.0 版本的pandas开始还支持一个indicator的参数,如果置True的时候,输出结果会增加一列 ’ _merge’。_merge列可以取三个值

    1. left_only 只在左表中
    2. right_only 只在右表中
    3. both 两个表中都有
  • 相关阅读:
    一本通1273货币系统(方案数背包)
    背包体积循环正序和逆序的区别
    Python字典的底层原理和优缺点
    Linux各目录及每个目录的详细介绍
    openwrt 下python程序后台运行,并将打印信息保存文件
    pycharm同一目录下无法import其他文件
    python sqlite3学习笔记
    python sqlite3查询表记录
    Pycharm快捷键的使用
    Python3 Address already in use 解决方法
  • 原文地址:https://www.cnblogs.com/vincent-sh/p/12859439.html
Copyright © 2011-2022 走看看