pandas - merge 函数
# All default
pd.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,
)
import pandas as pd
#当只加两个dataframe参数,其余参数都为默认的时候,两个dataframe必须要有至少一个相同的两列,否则会报错
#一个相同的key
data1 = pd.DataFrame({"key1": ["K0", "K1", "K2", "K3"],"A": ["A0", "A1", "A2", "A3"],"B": ["B0", "B1", "B2", "B3"],}
)
data2 = pd.DataFrame({"key1": ["K0", "K1", "K2", "K3"],"C": ["C0", "C1", "C2", "C3"],"D": ["D0", "D1", "D2", "D3"],}
)
mergeData = pd.merge(data1,data2)
#两个相同的key
data3 = pd.DataFrame({"key1": ["K0", "K1", "K2", "K3"],"key2": ["K4", "K5", "K6", "K7"],"A": ["A0", "A1", "A2", "A3"],"B": ["B0", "B1", "B2", "B3"],}
)
data4 = pd.DataFrame({"key1": ["K0", "K1", "K2", "K3"],"key2": ["K4", "K5", "K6", "K7"],"C": ["C0", "C1", "C2", "C3"],"D": ["D0", "D1", "D2", "D3"],}
)
mergeData1 = pd.merge(data3,data4)
#没有相同的key
data5 = pd.DataFrame({"A": ["A0", "A1", "A2", "A3"],"B": ["B0", "B1", "B2", "B3"],}
)
data6 = pd.DataFrame({"C": ["C0", "C1", "C2", "C3"],"D": ["D0", "D1", "D2", "D3"],}
)
pd.merge(data5,data6)
#MergeError: No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False
on 指定相同合并的列
pd.merge(data3,data4,on="key1")
pd.merge(data3,data4,on=["key1","key2"])
left_on, right_on 指定不同合并的列
data5 = pd.DataFrame({"key1": ["K0", "K1", "K2"],"A": ["A0", "A1", "A2"],"B": ["B0", "B1", "B2"],}
)
data6 = pd.DataFrame({"key2": ["K1", "K2", "K3"],"C": ["C0", "C1", "C2"],"D": ["D0", "D1", "D2"],}
)
pd.merge(data5,data6,left_on="key1",right_on="key2")
how - left、right、outer、inner(Default)、cross
#注意两个DaraFrame的key1和key2不一样
left = pd.DataFrame({"key1": ["K0", "K0", "K1", "K2"],"key2": ["K0", "K1", "K0", "K1"],"A": ["A0", "A1", "A2", "A3"],"B": ["B0", "B1", "B2", "B3"],}
)
right = pd.DataFrame({"key1": ["K0", "K1", "K1", "K2"],"key2": ["K0", "K0", "K0", "K0"],"C": ["C0", "C1", "C2", "C3"],"D": ["D0", "D1", "D2", "D3"],}
)
left :只保留左侧dataframe的keys进行合并,右侧dataframe的keys如果左侧dataframe没有的话,则删除。
pd.merge(left, right, how="left", on=["key1", "key2"])
right :只保留右侧dataframe的keys进行合并,左侧dataframe的keys如果右侧dataframe没有的话,则删除。
pd.merge(left, right, how="right", on=["key1", "key2"])
outer :并集,即两个dataframe的keys都保留
pd.merge(left, right, how="outer", on=["key1", "key2"])
inner :交集,即两个dataframe的相同keys才保留
pd.merge(left, right, how="inner", on=["key1", "key2"])
cross :组合,4*4=16行,但不能再使用"on"参数
pd.merge(left, right, how="cross")
left_index , right_index 通过index进行合并
left = pd.DataFrame({"A": ["A0", "A1", "A2"], "B": ["B0", "B1", "B2"]}, index=["K0", "K1", "K2"]
)right = pd.DataFrame({"C": ["C0", "C2", "C3"], "D": ["D0", "D2", "D3"]}, index=["K0", "K2", "K3"]
)#两个index都必须设置为True,否则报错。
pd.merge(left, right, left_index=True, right_index=True, how="outer")
pd.merge(left, right, left_index=True, right_index=True, how="inner")
suffixes 两个dataframe有相同的列名,并且这列名不做keys时,使用不同的后缀来区别两个dataframe的列
pd.merge(data3, data4, on="key1", how="outer", suffixes=("_first","_second"))
indicator 溯源,判断新dataframe的key分别来自哪个dataframe(both,left_only,right_only)
pd.merge(left, right, left_index=True, right_index=True, how="outer", indicator="indicator_column")
validate
"one_to_one" or "1:1": checks if merge keys are unique in both left and right datasets.
"one_to_many" or "1:m": checks if merge keys are unique in left dataset.
"many_to_one" or "m:1": checks if merge keys are unique in right dataset.
"many_to_many" or "m:m": allowed, but does not result in checks.
df1 = pd.DataFrame({"A": [1, 2], "B": [1, 2]})
df2 = pd.DataFrame({"A": [4, 5, 6], "B": [2, 2, 2]})
#右侧的df2,"B"列里是有重复的
pd.merge(df1, df2, on="B", how="outer", validate="one_to_one")
#MergeError: Merge keys are not unique in right dataset; not a one-to-one mergepd.merge(df1, df2, on="B", how="outer", validate="many_to_one")
#Merge keys are not unique in right dataset; not a many-to-one mergepd.merge(df1, df2, on="B", how="outer", validate="one_to_many")
#换A作为key试试。
pd.merge(df1, df2, on="A", how="outer", validate="one_to_one")
pd.merge(df1, df2, on="A", how="outer", validate="many_to_one")
pd.merge(df1, df2, on="A", how="outer", validate="one_to_many")
#都是同一个结果
merge其他更加复杂的合并方式,请大家移步官网:https://pandas.pydata.org/docs/user_guide/merging.html
pandas - merge 函数相关推荐
- Python科学计算之Pandas merge函数操作
文章目录 Merge函数 Merge介绍 Merge操作 Merge函数 Merge介绍 pandas中的merge()函数类似于SQL中join的用法,可以将不同数据集依照某些字段(属性)进行合并操 ...
- pandas使用merge函数将多个dataframe数据连接起来、设置how参数为outer指定全连接(outer join)、left_on参数指定左侧dataframe的连接字段
pandas使用merge函数将多个dataframe数据连接起来.设置how参数为outer指定全连接(outer join).left_on参数指定左侧dataframe的连接字段.right_o ...
- pandas使用merge函数将多个dataframe数据连接起来、设置how参数为left指定左连接(left join)、on参数指定连接字段
pandas使用merge函数将多个dataframe数据连接起来.设置how参数为left指定左连接(left join).on参数指定连接字段 目录
- 【Python】Pandas宝藏函数-concat()
在数据处理过程中,经常会遇到多个表进行拼接合并的需求,在Pandas中有多个拼接合并的方法,每种方法都有自己擅长的拼接方式,本文对pd.concat()进行详细讲解,希望对你有帮助.pd.concat ...
- 【Python】精选23个Pandas常用函数
公众号:尤而小屋 作者:Peter 编辑:Peter 从26个字母中精选出23个Pandas常用的函数,将它们的使用方法介绍给大家.其中o.y.z没有相应的函数. import pandas as p ...
- python中merge函数怎么用_Python Merge函数原理及用法解析
Merge函数的用法 简单来说Merge函数相当于Excel中的vlookup函数.当我们对2个表进行数据合并的时候需要通过指定两个表中相同的列作为key,然后通过key匹配到其中要合并在一起的val ...
- Python之数据合并——【concat()函数、merge()函数、join()方法、combine_first()方法】
文章目录 轴向堆叠数据--concat()函数 横向堆叠与外连接 纵向堆叠与内连接 主键合并数据--merge()函数 内连接方式 外连接方式 左连接方式 右连接方式 其他 根据行索引合并数据--jo ...
- pandas 常用函数整理
pandas常用函数整理,作为个人笔记. 仅标记函数大概用途做索引用,具体使用方式请参照pandas官方技术文档. 约定 from pandas import Series, DataFrame im ...
- 『Python核心技术与实战』pandas.DataFrame()函数介绍
pandas.DataFrame()函数介绍! 文章目录 一. 创建DataFrame 1.1. numpy创建 1.2. 直接创建 1.3. 字典创建 1.4. Series和DataFrame 二 ...
最新文章
- python代码根据当前时间获取下一周的日期
- 实用--HTML的命名规范
- 平面设计常用的图像文件格式
- linux下载b站的视频+ffmpeg抽取出mp3
- Fiori UI上my contact加了Dr. 后搜索不出数据的奇怪问题
- 什么是压缩感知?[简单概括]
- 【opencv学习】光流算法以及物体追踪算法(Lucas-Kanade算法)
- java 获取方法名
- STM32F103_ADC-DMA通道采集
- 纯C下用ODBC访问数据库(实例) 转载
- Python 三人斗地主手牌生成
- 关于openGL, openGL ES, openVG及android中2D调用关系的报告
- 5G发展的五大动力和四大挑战
- 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析
- Electron 入门,主进程向渲染进程发送事件,渲染进程向主进程发送事件
- java utf8无bom格式_关于java:编写没有BOM的UTF-8
- LTE物理层概述(6)-- LTE之调制与解调及其matlab仿真
- 将虚拟机的Ubuntu映射为windows的网络驱动器
- 大数据有哪些工作?岗位技能要求汇总
- IDEA调试遇到Method breakpoints may dramatically slow down debugging