zoukankan      html  css  js  c++  java
  • 数据规整化:pandas 求合并数据集(交集并集等)

    数据集的合并或连接运算是通过一个或多个键将行链接起来的。这些运算是关系型数据库的核心。pandas的merge函数是对数据应用这些算法的这样切入点。

    默认是交集, inner连接

    列名不同可以分别指定:

    其他方式还要‘left’、‘right’以及“outer”。外链接求取的是键的并集, 组合了左连接和右连接的效果。

     how 的作用是合并时候以谁为标准,是否保留NaN值

    多对多

    多对多 连接产生的行的笛卡尔积。由于左边的DataFrame有3个‘b’行, 右边的有2个,所以最终结果中

    就有6个‘b’行。

     

     根据多个键进行合并, 传入一个由列明组成的列表即可:

    left = DataFrame(
        {"key1": ['foo', 'foo', 'bar'],
         "key2": ['one', 'two', 'one'],
         "lval": [1, 2, 3]
         }
    )
    right = DataFrame(
        {"key1": ['foo', 'foo', 'bar', 'bar'],
         "key2": ['one', 'one', 'one', 'two'],
         "rval": [4, 5, 6, 7]
         }
    )
    print(left)
    print(right)
    pm = pd.merge(left, right, on=["key1", "key2"], how="outer")
    print(pm)

     

     on与left_on 和right_on的区别

     

    这个是left_on 和right_on 

     去重或更改后缀

     merge函数的参数

     

     索引上的合并

     

    merge方法求取连接键的并集

     对于层次化索引的数据

    这个时候必须以列表的形式指明用作合并键的多个列(注意对重复索引的处理)

    lefth = DataFrame({'key1':[ 'Ohio', 'Ohio', 'Ohio','Nevada', 'Nevada',],
                       "key2":[2000, 2001, 2002,2001, 2002],
                       "data":np.arange(5.)
                       })
    
    righth = DataFrame(np.arange(12).reshape((6, 2)),
                       index=[['Nevada', 'Nevada', 'Ohio', 'Ohio', 'Ohio', 'Ohio'],
                              [2001, 2000, 2000, 2000, 2001, 2002]],
                       columns=['event1', 'event2']
                       )
    
    print(lefth)
    print(righth)
    pm = pd.merge(lefth, righth,left_on=['key1', 'key2'], right_index=True)
    print(pm)

     索引并集

     DataFrame.join实例方法

    它能更为方便地实现索引合并。它还可用于和合并多个带有相同或相似索引的DataFrame对象, 而不管他们

    之间有重叠的列。

    print(left1.join(right1, how='inner'))

    left2.join([1, 2], how='outer') #多个
  • 相关阅读:
    配置rc.local开机自启动文件的疑问
    linux下使用shell查看apache IP访问量
    linux 查看剩余内存数
    linux ps 命令
    移动端资料大全
    git命令大全
    redis 应用场景
    TP框架中的多种方法代码(C,G,L,T,I,N,D,M,A,R,B,U,W,S,F,E)
    在linux上安装svn
    mysql 分表的实现方式
  • 原文地址:https://www.cnblogs.com/renfanzi/p/6480058.html
Copyright © 2011-2022 走看看