我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中Merge使用的示例详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中Merge使用的示例详解

merage

pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来,语法如下:

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)

作为一个功能完善、强大的语言,python的pandas库中的merge()支持各种内外连接。

  • left与right:两个不同的DataFrame
  • how:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner
  • on : 指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键
  • left_on:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同,但代表的含义相同时非常有用。
  • right_on:右则DataFrame中用作 连接键的列名
  • left_index:使用左则DataFrame中的行索引做为连接键
  • right_index:使用右则DataFrame中的行索引做为连接键
  • sort:默认为True,将合并的数据进行排序。在大多数情况下设置为False可以提高性能
  • suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为(’_x’,’_y’)
  • copy:默认为True,总是将数据复制到数据结构中;大多数情况下设置为False可以提高性能
  • indicator:在 0.17.0中还增加了一个显示合并数据中来源情况;如只来自己于左边(left_only)、两者(both)
#coding=utf-8
import pandas as pd
import numpy as np

class PanMerge():
    def PanMer(self):
        data =  pd.DataFrame([{"id": 0, "name": 'lxh', "age": 20, "cp": 'lm'}, {"id": 1, "name": 'xiao', "age": 40, "cp": 'ly'},{"id": 2, "name": 'hua', "age": 4, "cp": 'yry'}, {"id": 3, "name": 'be', "age": 70, "cp": 'old'}])
        data1 = pd.DataFrame([{"id": 100, "name": 'lxh', 'cs': 10}, {"id": 101, "name": 'xiao', 'cs': 40},{"id": 102, "name": 'hua2', 'cs': 50}])
        data2 = pd.DataFrame([{"id": 0, "name": 'lxh', 'cs': 10}, {"id": 101, "name": 'xiao', 'cs': 40},{"id": 102, "name": 'hua2', 'cs': 50}])
        data3 = pd.DataFrame([{"mid": 0, "mname": 'lxh', 'cs': 10}, {"mid": 101, "mname": 'xiao', 'cs': 40},{"mid": 102, "mname": 'hua2', 'cs': 50}])
        # print(data)
        # print(data1)
        # print(data2)
        df1 = pd.merge(data,data1,on="name",how="left",suffixes=('_a','_b'))#相同的其他类名用_a和_b标注
        df2 = pd.merge(data, data2, on=("name", "id")) #多列名做为内链接的连接键
        df3 = pd.merge(data, data2)  #不指定on则以两个DataFrame的列名交集做为连接键

        # 使用右边的DataFrame的行索引做为连接键
        indexed_data1 = data1.set_index("name")##设置行索引名称
        # print(indexed_data1)
        df5 = pd. merge(data, indexed_data1, left_on='name', right_index=True) #"使用右边的DataFrame的行索引做为连接键\r\n"
        print(df5)
        print('左外连接\r\n',pd.merge(data,data1,on="name",how="left",suffixes=('_a','_b')))
        print('左外连接1\r\n',pd.merge(data1,data,on="name",how="left"))
        print ('右外连接\r\n',pd.merge(data,data1,on="name",how="right"))

        # 当左右两个DataFrame的列名不同,当又想做为连接键时可以使用left_on与right_on来指定连接键
        df6=pd.merge(data,data3,left_on=["name","id"],right_on=["mname","mid"])
        print(df6)

join方法提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame。

其中参数的意义与merge方法基本相同, 只是join方法默认为左外连接how = left。

 dj1=pd.DataFrame([{"id":0,"name":'lxh',"age":20,"cp":'lm'},{"id":1,"name":'xiao',"age":40,"cp":'ly'},{"id":2,"name":'hua',"age":4,"cp":'yry'},{"id":3,"name":'be',"age":70,"cp":'old'}],index=['a','b','c','d'])
    dj2=pd.DataFrame([{"sex":0},{"sex":1},{"sex":2}],index=['a','b','e'])
    print(dj1)
    print(dj2)
    df7= dj1.join(dj2)
    print(df7)

    print('使用右连接\r\n', dj1.join(dj2, how="right") ) # 这里出自动屏蔽了data1中没有index=c,d的那行数据;等价于data1.join(data)
    print('使用内连接\r\n', dj1.join(dj2, how='inner'))
    print('使用全外连接\r\n', dj1.join(dj2, how='outer'))

还有一种连接方式:concat

concat方法相当于数据库中的全连接(UNION ALL),可以指定按某个轴进行连接,也可以指定连接的方式join(outer,inner 只有这两种)。

与数据库不同的是concat不会去重,要达到去重的效果可以使用drop_duplicates方法

     dc1 = pd.DataFrame({'city': ['Chicago', 'San Francisco', 'New York City'], 'rank': range(1, 4)})
        dc2 = pd.DataFrame({'city': ['Chicago', 'Boston', 'Los Angeles'], 'rank': [1, 4, 5]})
        print(dc1)
        print(dc2)
        # print('按轴进行内连接\r\n', pd.concat([dc1, dc2], join="inner", axis=0))
        dc3=pd.concat([dc1,dc2],join="inner", axis=0) #axis=1横向操作,axis=0纵向操作
        print(dc3)
        dc4=pd.concat([dc1,dc2],keys=['a','b']) #进行外连接并指定keys(行索引) 用a,b 进行标识
        print(dc4)

        dc5 = pd.concat([dc1,dc2],ignore_index=True).drop_duplicates() #完全一样时候,去重数据
        print(dc5)


if __name__ == '__main__':
    PanMerge().PanMer()

到此这篇关于Python中Merge使用的示例详解的文章就介绍到这了,更多相关Python Merge内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中Merge使用的示例详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中Merge使用的示例详解

Python里的merger函数是数据分析工作中最常见的函数之一,类似于MySQL中的join函数和Excel中的vlookup函数。本文将通过一些简单的实力和大家聊聊Merge的使用,需要的可以了解一下
2023-02-21

Python中的Merge怎么使用

这篇文章主要介绍了Python中的Merge怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python中的Merge怎么使用文章都会有所收获,下面我们一起来看看吧。meragepandas提供了一个类似
2023-07-05

python Fabric使用详解及示例

abric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行、文件上传、下载及完整执行日志输出等功能。Fabric在Paramik
2023-01-31

.NET中的Swagger使用示例详解

本文章详细介绍了.NET中Swagger的使用示例。通过安装Swashbuckle.AspNetCoreNuGet包,可以生成交互式API文档。使用特性可以为控制器和操作添加Swagger文档信息,包括状态码、响应类型和摘要描述。配置文件中的代码负责配置Swagger设置,启用Swagger中间件并指定文档路径。最终,可以通过SwaggerUI浏览和测试API,从而自动生成文档,简化开发和测试,提高代码可维护性,促进API可发现性和集成。
.NET中的Swagger使用示例详解
2024-04-02

python中API调用的详解与示例

本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于API调用的相关问题,包括了API的调用和数据接口的调用、请求方法、几种常见API调用实例等等内容,下面一起来看一下,希望对大家有帮助。在日常工作中,可能需要结合网上现在的一些API或者公司提供的数据接口来得到相应的数据或者实现对应的功能。 因此API的调用和数据接口的访问都是做数据分析的一个常用操作,如何快速实现API和数据接口的调
2022-06-16

使用python-pptx操作PPT的示例详解

python对PPT演示文档读写,是通过第三方库python-pptx实现的,python-pptx是用于创建和更新 PowerPoint文件的 Python 库。本文主要介绍了python-pptx操作PPT的相关示例,希望对大家有所帮助
2023-01-12

Android中ExpandableListView使用示例详解

本文实例为大家分享了ExpandableListView使用示例,供大家参考,具体内容如下MainActivity:public class Expandable_test extends Activity { private Expan
2023-05-30

MySQL 中 LIMIT 使用示例详解

mysql是一种常用的关系型数据库管理系统,它提供了许多用于查询和操作数据的功能。其中,LIMIT是一个非常有用的关键字,用于在查询结果中限制返回的行数。操作数据库时,经常会遇到需要查询前几条或者后几条数据的javascript情况,尤
MySQL 中 LIMIT 使用示例详解
2024-08-12

iOS中NSThread使用示例详解

这篇文章主要为大家介绍了iOS中NSThread使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

GoJs中的动画使用示例详解

这篇文章主要为大家介绍了GoJs中的动画使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-18

Python中__init__的用法和理解示例详解

在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问,从文字理解比较困难,下面通过示例代码帮助大家理解__init__在python中用法,感兴趣的朋友一起看看吧
2023-02-10

python中session的使用案例详解

这篇文章主要介绍了python session使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-19

Python Flask JinJa2 语法使用示例详解

这篇文章主要为大家介绍了Python Flask JinJa2 语法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录