1、merge()中的常用参数
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'))
- left: 拼接的左侧DataFrame对象
- right: 拼接的右侧DataFrame对象
- on: 指定两个dataframe按某一列进行连接,该列必须同时出现在两个dataframe中。
如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。 - left_on:左侧DataFrame中用作连接键的列。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
- right_on: 右侧DataFrame中用作连接键的列。可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
- left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键的列。
对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。 - right_index: 与left_index功能相似。
- how: ‘left’, ‘right’, ‘outer’或‘inner’之一。
默认inner。inner是取两个dataframe的连接键列中元素的交集,outer取其并集,如果其中一个dataframe中的连接键列中不含有某元素,则该元素对应的这行数据中的其它列用NAN填充。 - sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能。
- suffixes: 用于重叠列的字符串后缀元组。 默认为(‘x’,’ y’)。也可手动指定:suffixes=(“df1”,“df2”)
2、举例
列几个例子细细品味:
import pandas as pd
dataDf1=pd.DataFrame({'列1_left':['a','b','b','c'],
'列2_left':[1,2,2,3]})
dataDf2=pd.DataFrame({'列1_right':['b','c','c','d'],
'列2_right':[2,3,3,4]})
print(dataDf1)
print(dataDf2)
输出:
dataLfDf=pd.merge(dataDf1,dataDf2, left_on='列1_left',right_on='列1_right') #默认how='inner'
dataLfDf
dataLfDf=pd.merge(dataDf1,dataDf2, how='outer',left_on='列1_left',right_on='列1_right')
dataLfDf
dataLfDf=pd.merge(dataDf1,dataDf2, how='right',left_on='列1_left',right_on='列1_right')
dataLfDf
import pandas as pd
dataDf1=pd.DataFrame({'key':['a','b','b','c'],
'列2_left':[1,2,2,3]})
dataDf2=pd.DataFrame({'key':['b','c','c','d'],
'列2_right':[2,3,3,4]})
print(dataDf1)
print(dataDf2)
dataLfDf=pd.merge(dataDf1,dataDf2, how='outer',on='key')
dataLfDf
dataLfDf=pd.merge(dataDf1,dataDf2, how='left',on='key')
dataLfDf