当使用Python中的pandas库时,merge函数是用于合并(或连接)两个数据框(DataFrame)的重要工具。它类似于SQL中的JOIN操作,允许你根据一个或多个键(key)将两个数据框连接起来。
merge函数的基本语法如下:
pd.merge( left, # 要合并的左侧 DataFrame right, # 要合并的右侧 DataFrame how='inner', # 连接方式,包括 'left', 'right', 'outer', 'inner',默认为 'inner' on=None, # 用于连接的列名,必须存在于左侧和右侧 DataFrame 中 left_on=None, # 左侧 DataFrame 用于连接的列名 right_on=None, # 右侧 DataFrame 用于连接的列名 left_index=False, # 如果为 True,则使用左侧 DataFrame 的索引作为连接键 right_index=False, # 如果为 True,则使用右侧 DataFrame 的索引作为连接键 suffixes=('_x', '_y'), # 字符串后缀,用于重叠列名的处理 sort=False, # 根据连接键对合并后的数据进行排序 copy=True, # 如果为 False,可以提高性能,但是在某些情况下会修改原始数据 )
基本用法
merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称']) # 连接方式,包括 'left', 'right', 'outer', 'inner',默认为 'inner' print(merged_df)
指定不同的列名
merged_df = pd.merge(left_df, right_df, how='outer', left_on='店铺名称', right_on='店铺名称2') print(merged_df)
处理重复列名,相同列名加后缀
merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称'], suffixes=('_left', '_right')) print(merged_df)
根据索引进行合并
merged_df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True) print(merged_df)
开启一列标记列,标记数据来源
merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称','订单号'], indicator=True) print(merged_df)
完整代码
import pandas as pd # 读取两个 Excel 文件 left_df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\数据1.xlsx',sheet_name='Sheet2') right_df = pd.read_excel('C:\\Users\\liuchunlin2\\Desktop\\数据2.xlsx',sheet_name='Sheet2') #基本用法 merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称']) # 连接方式,包括 'left', 'right', 'outer', 'inner',默认为 'inner' print(merged_df) #指定不同的列名 merged_df = pd.merge(left_df, right_df, how='outer', left_on='店铺名称', right_on='店铺名称2') print(merged_df) #处理重复列名,相同列名加后缀 merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称'], suffixes=('_left', '_right')) print(merged_df) #根据索引进行合并 merged_df = pd.merge(left_df, right_df, how='outer', left_index=True, right_index=True) print(merged_df) #开启一列标记列,标记数据来源 merged_df = pd.merge(left_df, right_df, how='outer', on=['店铺名称','订单号'], indicator=True) print(merged_df)