码迷,mamicode.com
首页 > 其他好文 > 详细

pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集

时间:2018-04-12 23:28:46      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:连接   填充   outer   span   列表   color   情况下   range   bsp   

pandas对象中的数据可以通过一些内置的方式进行合并:

 pandas.merge 可根据一个或多个键将不同的DataFrame中的行连接起来。

pandas.concat可以沿着一条轴将多个对象堆叠到一起

实例的方法conbine_first 可以将重复的数据编接到一起,用一个对象中的值填充另一个对象的缺失值。

数据库风格的DataFrame合并

In [51]: df1 = DataFrame({key:[b,b,a,c,a,a,b],data1:range(7)})
In [53]: df2 = DataFrame({key:[a,b,d],data2:range(3)})

In [54]: df1
Out[54]:
   data1 key
0      0   b
1      1   b
2      2   a
3      3   c
4      4   a
5      5   a
6      6   b

In [55]: df2
Out[55]:
   data2 key
0      0   a
1      1   b
2      2   d

In [56]: pd.merge(df1,df2)
Out[56]:
   data1 key  data2
0      0   b      1
1      1   b      1
2      6   b      1
3      2   a      0
4      4   a      0
5      5   a      0

 

默认不显式指明用哪个键进行连接的时候,merge会将重叠列的列名当做键。不过,最好显式的指明:

In [57]: pd.merge(df1,df2,on = ‘key‘)

如果两个列的列名不同,可以分别指定

In [58]: df4 = DataFrame({key-r:[a,b,d],data2:range(3)})

In [59]: df3 = DataFrame({key-l:[b,b,a,c,a,a,b],data1:range(7)})


In [63]: pd.merge(df3,df4,left_on = key-l,right_on = key-r)
Out[63]:
   data1 key-l  data2 key-r
0      0     b      1     b
1      1     b      1     b
2      6     b      1     b
3      2     a      0     a
4      4     a      0     a
5      5     a      0     a

默认情况下,merge做的是‘inner’连接,merge还有left、right和outer:

In [64]: pd.merge(df1,df2,how=outer)
Out[64]:
   data1 key  data2
0    0.0   b    1.0
1    1.0   b    1.0
2    6.0   b    1.0
3    2.0   a    0.0
4    4.0   a    0.0
5    5.0   a    0.0
6    3.0   c    NaN
7    NaN   d    2.0

如果要根据多个键进行合并,传入一个由列名组成的列表即可。

In [65]: left = DataFrame({key1:[a,a,b],key2:[one,two,one],lrow:[1,2,3]})

In [66]: right = DataFrame({key1:[a,a,b,b],key2:[one,one,one,two],rrow:[4,5,6,7]})

In [67]: pd.merge(left,right,on = [key1,key2])
Out[67]:
  key1 key2  lrow  rrow
0    a  one     1     4
1    a  one     1     5
2    b  one     3     6

 

如果合并的列中存在重复的列,可以指定重复的列的后缀进行区分

In [68]: pd.merge(left,right,on = [key1])
Out[68]:
  key1 key2_x  lrow key2_y  rrow
0    a    one     1    one     4
1    a    one     1    one     5
2    a    two     2    one     4
3    a    two     2    one     5
4    b    one     3    one     6
5    b    one     3    two     7
#指定列名
In [71]: pd.merge(left,right,on = [key1],suffixes=[_eft,_right])
Out[71]:
  key1 key2_eft  lrow key2_right  rrow
0    a      one     1        one     4
1    a      one     1        one     5
2    a      two     2        one     4
3    a      two     2        one     5
4    b      one     3        one     6
5    b      one     3        two     7

 

pandas(七)数据规整化:清理、转换、合并、重塑之合并数据集

标签:连接   填充   outer   span   列表   color   情况下   range   bsp   

原文地址:https://www.cnblogs.com/zuoshoushizi/p/8810876.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!