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)
  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/lantingg/p/9724719.html
Copyright © 2011-2022 走看看