zoukankan      html  css  js  c++  java
  • Pandas-多表操作

    Pandas包对多个数据表(DataFrame)的常用整合功能。

    目录

    • merge
    • join
    • concat
    • append
    • combin_first

     


     

    merge 合并

    • pandas.merge可根据一个或多个键将不同DataFrame中的行合并起来
    • 复制代码
      # 在未指定连接键的情况下,merge会将重叠列的列名当做键
      pd.merge(left, right)
      
      # 指定“on”作为连接键,left和right两个DataFrame必须同时存在“on”列,连接键也可N对N(少用)
      pd.merge(left, right, on="key")
      pd.merge(left, right, on=["key1", "key2"])
      
      # 指定left的连接键为“lkey”,right的连接键为“rkey”
      pd.merge(left,  right,  left_on="lkey",  right="rkey")
      
      # suffixes:用于追加到重叠列名的末尾,默认为("_x", "_y")
      pd.merge(left,  right,  on="key",  suffixes=("_left",  "_right"))
      
      # 指定连接方式:“inner”(默认),“left”,“right”,“outer”
      pd.merge(left, right, how="outer")
      复制代码
    • 多对多连接产生的是行的笛卡尔积
    • 常用方式:连接方式为“left”,right的连接键要唯一(去除重复值),通过right的数据补全left的数据

       索引上的合并(可用join代替,而且join更方便)

    • 当DataFrame的连接键位于其索引中,可以使用 left_index=True 和 right_index=True
    • 复制代码
      # 索引和索引连接
      pd.merge(left,  right,  left_index=True,  right_index=True)
      
      # "key"和索引连接
      pd.merge(left,  right,  left_on="key",  right_index=True)
      
      # 层次化索引
      pd.merge(left,  right,  left_on=["key1", "key2"],  right_index=True)
      复制代码

       

    join 连接

    • DataFrame的join实例方法,是为了方便实现索引合并
    • 复制代码
      # 用left的索引和right的索引进行merge
      left.join(right)
      
      # 用left的索引和right的“key”进行merge
      left.join(right, on="key")
      
      # 层次化索引
      left.join(right, on=["key1", "key"])
      
      # join可以合并两张以上的表,而merge只能合并两张表
      left.join([right1, right2], how="outer")
      复制代码

       

    concat  轴向连接

    • pandas.concat可以沿着一条轴将多个表对象堆叠到一起:因为模式how模式是“outer”
    • 复制代码
      # 默认 axis=0 上下拼接,列column重复的会自动合并
      pd.concat([df1, df2], axis=0)
      
      # axis=1 左右拼接,行raw/index重复的会自动合并
      pd.concat([df1, df2], axis=1)
      
      # 忽略df1和df2原来的index,重新给新的DataFrame设置从0开始的index
      pd.concat([df1,df2],  ignore_index=True)
      复制代码

       

    append

    • 使用场景:表头一致的多张表,进行连接(上下连接)
      df1.append(df2).append(df3)

       

    combin_first 数据填补

    • 使用场景:有两张表left和right,一般要求它们的表格结构一致,数据量也一致,使用right的数据去填补left的数据缺漏
    • 如果在同一位置left与right数据不一致,保留left的数据
      df1.combin_first(df2)
  • 相关阅读:
    js数据类型转换
    html5的onhashchange和history历史管理
    Javascript语言精粹-毒瘤和糟粕
    [夏天Object]运行时程序执行的上下文堆栈(一)
    [Object]继承(经典版)(五)封装
    [Object]继承(经典版)(四)多重继承和组合继承
    flex 弹性布局的大坑!!
    带视觉差的轮播图
    不用循环的数组求和
    CSS3盒模型display:box简述
  • 原文地址:https://www.cnblogs.com/lantingg/p/9724719.html
Copyright © 2011-2022 走看看