一、参数、简例
1) merge 函数参数
参数 | 说明 |
---|---|
left | 参与合并的左侧DataFrame |
right | 参与合并的右侧DataFrame |
how | 连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’ |
on | 用于连接的列名,必须同时存在于左右两个DataFrame对象中,如果位指定,则以left和right列名的交集作为连接键 |
left_on | 左侧DataFarme中用作连接键的列 |
right_on | 右侧DataFarme中用作连接键的列 |
left_index | 将左侧的行索引用作其连接键 |
right_index | 将右侧的行索引用作其连接键 |
sort | 根据连接键对合并后的数据进行排序,默认为True。有时在处理大数据集时,禁用该选项可获得更好的性能 |
suffixes | 字符串值元组,用于追加到重叠列名的末尾,默认为(‘_x’,‘_y’).例如,左右两个DataFrame对象都有‘data’,则结果中就会出现‘data_x’,‘data_y’ |
copy | 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。默认总是赋值 |
2)简例:
left = pd.DataFrame({‘key1’:[‘foo’,‘foo’,‘bar’],‘key2’:[‘one’,‘one’,‘two’],‘lval’:[1,2,3]})
right = pd.DataFrame({‘key1’:[‘foo’,‘foo’,‘bar’,‘bar’],‘key2’:[‘one’,‘one’,‘one’,‘two’],‘rval’:[4,5,6,7]})
执行结果见图:
pd.merge(left,right,on = [‘key1’,‘key2’],how = ‘outer’)合并结果见下图:
3)对连接表中非连接列的重复列名的处理:
pd.merge(left,right,on = ‘key1’)
pd.merge(left,right,on = ‘key1’,suffixes = (’_left’,’_right’)),再添加 suffixes参数结果如图:
二:实例应用:
step1:
分别读取需要合并excel文件,本次案例合并两个文档数据(针对excel只存一个表单情况,若有多个加入sheet_name参数即可)
f1=pd.read_excel(r’C:\Users\user\Desktop\prac.xlsx’)
f2=pd.read_excel(r’C:\Users\user\Desktop\prac1.xlsx’)
df1=pd.DataFrame(f1)
df2=pd.DataFrame(f2)
ps:路径根据自身实际改动即可。
f1数据样本如图:
f2数据样本如图:
step2:
对两个文档数据进行合并
result=pd.merge(df1,df2,on=[‘a’],how=‘inner’,suffixes=(’_df1’,’_df2’))
本次我合并是以两个文档a属性作为关联标识,又由于两张表中均存在d属性因此以suffixes属性将其区分,最终求交集得出最终结果如图下:
由此可知两张表中a关联中以two为两张表中共有属性,同时d属性因在两种表中均存在,因此提前以suffixes做好区分。
step3:
将该数据另存为新的excel文档
mergef=result.to_excel(r’C:\Users\user\Desktop\关联结果.xlsx’,sheet_name=‘关联结果’)
打开保存好的文档数据如图:
完整代码如下:
f1=pd.read_excel(r'C:\Users\user\Desktop\prac.xlsx',sheet=0)
f2=pd.read_excel(r'C:\Users\user\Desktop\prac1.xlsx',sheetname=0)
df1=pd.DataFrame(f1)
df2=pd.DataFrame(f2)
result=pd.merge(df1,df2,on=['a'],how='inner',suffixes=('_df1','_df2'))
mergef=result.to_excel(r'C:\Users\user\Desktop\关联结果.xls',sheet_name='关联结果')
注:以最简案例根据自身需求加入相关条件可实现日常需要关联的大批量数据文档。