利用Python实现海量数据之间的合并工作——pandas.merge
在excel中需要利用VLOOKUP函数进行两个表格的关联列合并操作。Python中的pandas.merge()函数拥有更加强大的功能,函数需要利用Pandas包。
其中,
1、data1和data2表示需要进行合并操作的两个数据集表格,两个表格都可以选定特定列进行合并操作;
2、how='' 表示两个列表的合并策略,可选参数有'left'、'right'、'outer'和'inner'4种,
(1)'left' 表示以左表格(data1)为基准进行合并,合并时保留左表格匹配列的全部内容,右表格(data2)多出内容进行删除,缺少内容填入nan值;
(2)'right' 表示右表格为基准进行合并,合并时保留右表格匹配列的全部内容,左表格多出内容进行删除,缺少内容填入nan值;
(3)'outer' 表示进行合并时保留两表格匹配列的全部内容,相互缺失的内容填入nan值;
(4)'inner' 表示合并时仅保留两表格匹配列共同拥有的内容,其余进行删除处理;
3、on=[] 表示选定匹配列操作,匹配列必须是两表格的同名列,可选择多列进行匹配;
4、sort= 表示对匹配列的排序策略,True表示排序,False表示不排序;
5、suffixes=() 表示对两列表合并时非匹配列的同名列进行重命名工作,默认在同名列后面加"_x", "_y"
6、indicator= 表示是否显示对应行来自的表格,相当于添加来源项属性,Ture表示添加,False表示不添加;
7、validate= 用于检测两表格匹配列间的对应关系,若不符合对应关系会报错,
(1)“one_to_one”或“1:1”:检查对应列在左表格和右表格中是否唯一,(是否为1对1关系);
(2)“one_to_many”或“1:m”:检查对应列在左表格中是否唯一,(是否为1对多关系);
(3)“many_to_one”或“m:1”:检查对应列在右表格中是否唯一,(是否为多对1关系);
(4)“many_to_many”或“m:m”:不进行检测(任意关系都可)。
import pandas as pd
data = pd.merge(data1, data2[['列名1', '列名2', '列名3']], how='inner', on=['列名3'], sort=False, suffixes=("_x", "_y"), indicator=False, validate=None)