pandas数据规整化:清理转换合并重塑之合并数据集
Posted 左手十字
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas数据规整化:清理转换合并重塑之合并数据集相关的知识,希望对你有一定的参考价值。
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数据规整化:清理转换合并重塑之合并数据集的主要内容,如果未能解决你的问题,请参考以下文章