Python 的pandas能够通过一些内置的方式进行数据集的合并。Pandas.merge函数可以实现根据一个或多个键值关键的键值,将两个DataFrame进行连接,这一特性,特别类似于数据库的连接。他实现的其实就是数据库连接的操作。
现在我们按照数据库连接的逻辑,分开解释Pandas.merge的使用。
Join two dataframes along columns
1。inner join。跟我们熟知的一样,inner join实现的是两个集合的交集。
pd.merge(df1,df2,on='key')
pd.merge(df1,df2,on='key',how='inner')
df1,df2分别为不同的dataframe, ‘key’ 为指定关联的键值。如果两个frame有不同的键值,则
pd.merge(df1,df2,left_on='lkey',right_on='rkey')
例如:
2. outer join. 两个集合进行outer join,其中以一个集合的键值为关键点,
left outer join:pd.merge(df1,df2,on='key',how='left')
right outer join: pd.merge(df1,df2,on='key',how='right')
full join: pd.merge(df1,df2,how='outer')
多个键值相互关联,
pd.merge(left,right,on=['key1','key2'],how='outer')
如果一个键值同时存在于两个Frame中,而且并不是关联的键值时,可以用
pd.merge(left,right,on='key1',suffixes=('_left','_right'))
Merge on index
inner:pd.merge(left1,right1,left_on='key',right_index=True)
full:pd.merge(left1,right1,left_on='key',right_index=True,how='outer')
所有的和之前的join模式一样,但是需要制定left_index=True or right_index=True.
多层次INDEX merge:
index &key,
pd.merge(lefth,righth,left_on=['key1','key2'],right_index=True)
index&index,
pd.merge(lefth,righth,left_index=True,right_index=True,how='outer')
Join two Dataframe along rows
pd.concat([S1,S2,S3])类似于Dataframe 的union all
pd.concat([S1,S2,S3]) 类似于 full join,同样达到了join by columns的目的。