merge函数:
Python牛马界的神奇数据表合并方法
适用场景:
通过两个数据表的某列,进行匹配,将两个数据表拼接在一起
适用的库:
pandas
基本语法:
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)
参数说明:
left:要合并的DataFrame对象,一般可称作左表
right:要合并的DataFrame对象,一般可称作右表
how:合并的类型,使用的合并类型不同,获取到的结果也不同,例如:
- left/right:以左(右)表的键为主,值得注意的是,一般通过left(right)合并,
- 得到的数据表行数,只会和左(右)表的行数一致,若有超出的情况,
- 则需要查看是否有左(右)表一个键对应右(左)表多个键的情况
- outer:以左右两表的键为主
- inner:以左右两个表中都包含的键为主
- on:合并键的列名,即左右表中都存在的列
- left_on/right_on:左(右)表中的作为合并键的列名
- left_index/right_index:是否将索引作为合并的键,布尔值
- sort:是否根据合并键对合并后的数据进行排序,布尔值(默认为True)
- suffixes:元组,如果左右两个表存在相同的列名时,给列名添加后缀(默认添加'_x','_y')
- copy:是否返回新对象(默认为True),否返回对输入值的引用,布尔值
- indicator:是否添加一个 '_merge' 的输出列,标注每一行的原始数据来源
- ('left_only'、'right_only'、'both'),布尔值
- validate:用于检查合并是否满足特定条件的字符串或可调用对象
- ('left_only'、'right_only'、'both'),布尔值
- indicator:是否添加一个 '_merge' 的输出列,标注每一行的原始数据来源
- copy:是否返回新对象(默认为True),否返回对输入值的引用,布尔值
- suffixes:元组,如果左右两个表存在相同的列名时,给列名添加后缀(默认添加'_x','_y')
- sort:是否根据合并键对合并后的数据进行排序,布尔值(默认为True)
-
实例一:left合并方式
- 代码如下所示:
-
import pandas as pd # 创建两个示例数据框 df1 = pd.DataFrame({ 'A': ['北京','南京', '新疆'], 'B': ['甲', '乙', '丙'] }) df2 = pd.DataFrame({ 'C': ['上海','北京', '新疆'], 'D': ['甲', '乙', '丙'] }) #这种用法下df1为左表,df2为右表,左匹配不到的行自动填充为nan merged_df = df1.merge(df2,left_on = 'A',right_on='C',how='left') print(merged_df)
结果:
-
- 代码如下所示:
- left_index/right_index:是否将索引作为合并的键,布尔值
- left_on/right_on:左(右)表中的作为合并键的列名
- on:合并键的列名,即左右表中都存在的列
- inner:以左右两个表中都包含的键为主
- outer:以左右两表的键为主
- 则需要查看是否有左(右)表一个键对应右(左)表多个键的情况
- 得到的数据表行数,只会和左(右)表的行数一致,若有超出的情况,
实例二:right合并方式
代码如下所示:
import pandas as pd
# 创建两个示例数据框
df1 = pd.DataFrame({
'A': ['北京','南京', '新疆'],
'B': ['甲', '乙', '丙']
})
df2 = pd.DataFrame({
'C': ['上海','北京', '新疆','河北'],
'D': ['甲', '乙', '丙','丁'],
})
#这种用法下df1为左表,df2为右表,左匹配不到的行自动填充为nan
merged_df = df1.merge(df2,left_on = 'A',right_on='C',how='right')
print(merged_df)
结果:
就说这叭,累了,剩下的你还是自己试试叭