首页 > 其他 > 详细

数据规整化:pandas 求合并数据集(交集并集等)

时间:2017-02-28 19:31:39      阅读:1198      评论:0      收藏:0      [点我收藏+]

 

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

 

默认是交集, inner连接

列名不同可以分别指定:

技术分享

 

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

技术分享

 

多对多

 

技术分享

多对多 连接产生的行的笛卡尔积。由于左边的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)

技术分享

 

 去重或更改后缀

技术分享

 

 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‘) #多个

 

数据规整化:pandas 求合并数据集(交集并集等)

原文:http://www.cnblogs.com/renfanzi/p/6480058.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!