简介
python中的pandas库拥有类似于sql server 中 join 的数据合并函数merge()
其语法格式如下:
pandas.merge(left(主表), right(副表), how='merge的方法', on='基于什么去merge(只用on的话两张表必须是同一字段名称)', left_on='主表基于什么去merge', right_on='副表基于什么去merge', left_index='是否使用主表的index', right_index='是否使用副表的index', sort='是否排序', suffixes=('_x', '_y') '用于重叠列的字符串后缀元组' , copy='是否始终从传递的DataFrame对象复制数据', indicator='是否包含有关每行源的信息', validate='基于什么去验证')
上述语法格式中:
- ‘是否’的默认值都为:True
- ‘基于’的默认值都为:None
how 中merge的方法,其默认值为’inner’,其主要方法有如下几种:
- left:同sql中 LEFT OUTER JOIN;使用主表中的key;主表不被筛选
- right:同sql中 LEFT OUTER JOIN;使用副表中的key;副表不被筛选
- outer:同sql中 FULL OUTER JOIN;使用主表和副表中的key union后的结果;即结果为union后的结果
- inner:同sql中 INNER JOIN;使用主表和副表中的key的交集结果;即结果为主表和副表相交的结果
实例
现在有两张表,将table1作为主表,table2作为副表(其index为时间类型),在不改变table1情况下与table2 merge。
代码展示:
import pandas as pd
pd.merge(table1,table2,left_on=table1['datetime'],right_on=table2.index)
输出为:
解释:
- 图中1部分为,merge时使用的key,即table1[‘datetime’]字段
- 图中2部分为,table1 内容
- 图中3部分为,table2 内容