Pandas库:从入门到应用(三)——多表连接操作

news2025/2/25 16:24:45

一 、concat数据连接

1.1、concat()函数参数
pd.concat(objs, axis=0, join='outer', ignore index=False, keys=None, levels=None, names=Noneverify integrity=False, sort= False, copy=True)

objs:多个 DataFrame 或者 Series
axis:0-行拼接 1-列拼接
join:{‘inner’,'outer’},其他轴上的数据是按交集 (inner) 还是并集 (outer) 进行合并inner
ignore_index:布尔类型,是否保留原表索引
keys:列表,使用传递的键作为最外层级别来构造层次结构索引,就是给每个表指定一个一级索引
levels:列表,用于构造Multilndex的特定级别
names:列表,索引的名称,包括多层索引
verify_integrity:布尔类型,参数为True时,如果合并的数据与原数据包含索引相同的行,将报错
sort:布尔类型,对非连接轴进行排序
copy:布尔类型,是否进行深拷贝

1.2、行连接
1.2.1、数据准备
import numpy as np
import pandas as pd

df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                  ,columns=['Python','Math','English','Chinese']
                  ,index=list('abcde'))
df1

在这里插入图片描述

df2 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                   ,columns=['Java','Math','English','Chinese']
                   ,index=list('xyzab'))
df2

在这里插入图片描述

1.2.2、并集模式拼接(join=‘outer’)
pd.concat([df2,df1],axis=0) #df1与df2行拼接

在这里插入图片描述

df2.append(df1) #使用append 追加 达到拼接效果

在这里插入图片描述

1.2.3、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=0,join='inner')

在这里插入图片描述

1.3、列连接
1.3.1、并集模式拼接(join=‘outer’)
pd.concat([df1,df2],axis=1,join='outer')

在这里插入图片描述

1.3.2、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=1,join='inner')

在这里插入图片描述

二、insert数据插入

2.1、insert函数参数
df.insert(loc,column,value,allow_duplicates)

loc:#int 使用整数定义_列数据_插入的位置,必须是0到columns列标签的长度 0 <= loc <= len(columns)
column: # 可选字符串、数字或者object;列标签名
value: # 整数、Series或者数组型数据
allow_duplicates: # 可选参数,如果dataframe中已经存在某列,将allow_duplicates置为true才可以将指定得列插入

2.2、插入不存在列数据
import numpy as np
import pandas as pd


df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                   ,columns=['Python','Math','English','Chinese']
                   ,index=list('abcde'))

df1.insert(loc=1,column='Java',value=100) #插入Java列数据 值为100
df1

在这里插入图片描述

2.3、插入存在列数据
df1.insert(loc=1,column='Python',value=100) #插入Python列数据 值为100

在这里插入图片描述

直接报错了,必须要加上参数allow_duplicates=True

df1.insert(loc=1,column='Python',value=100,allow_duplicates=True)#插入Python列数据 值为100
df1

在这里插入图片描述

三、merge数据合并(sql join风格)

3.1、merge函数参数
pd.merge(DataFrame2, how=‘inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', ‘_y'))
how默认为inner,可设为inner/outer/left/right
on根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置)
left_on左连接,以DataFrame1中用作连接键的列
right_on右连接,以DataFrame2中用作连接键的列
left_index将DataFrame1行索引用作连接键
right_index将DataFrame2行索引用作连接键
sort根据连接键对合并后的数据进行排列,默认为True
suffixes对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别
3.2、使用inner内连接模式
import pandas as pd
import numpy as np
# 表⼀中记录的是name和体重信息
df1 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Ella'],'weight':[70,55,75,65]})

# 表⼆中记录的是name和身⾼信息
df2 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})

df3 = pd.DataFrame(data = {'名字':
                               ['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})
# 根据共同的name将俩表的数据,进⾏合并
pd.merge(df1,df2,
         how = 'inner',# 内合并代表两对象交集
         on = 'name' #两个表的关联建,即相同便可以关联上,不同数据就关联不上
         )

在这里插入图片描述

3.3、使用outer外连接模式
pd.merge(df1,df3,
         how = 'outer',# 全外连接,两对象并集
         left_on = 'name',# 左边DataFrame使⽤列标签 name进⾏合并
         right_on = '名字')# 右边DataFrame使⽤列标签 名字进⾏合并

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

011:Mapbox GL两种方式隐藏logo和版权,个性化版权的声明

第011个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中用两种方式隐藏logo和版权,并个性化版权的声明 。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共91行)相关API参考:专栏目标示例效果 配置方式…

2023高性价比学生手机选购攻略,预算不多入手这3款超值

学生党在预算不多的情况&#xff0c;想要换颜值高的新手机&#xff0c;应该选什么样的手机才实惠&#xff1f; 手机已经成为生活中的必需品&#xff0c;市场上的手机品牌和型号多种多样&#xff0c;价格逐年攀升&#xff0c;对于预算有限的学生党来说&#xff0c;在保证性能和…

编译原理期末速成笔记

哈喽大家好&#xff0c;又要考试了&#xff0c;在这里分享一下我的两天速成笔记&#xff0c;参考视频为哔站 Deeplei_ 的《编译原理期末速成》。本文仅是知识点总结&#xff0c;至于考试内容待我研究一下&#xff0c;后续我会再发文对考试的各个模块做详细分析&#xff0c;欢迎…

JavaWeb开发 —— Ajax

目录 一、介绍 二、原生Ajax 三、Axios 四、案例分析 一、介绍 ① 概念&#xff1a;Asynchronous JavaScript And XML&#xff0c;异步的JavaScript和XML。 ② 作用&#xff1a; 数据交换&#xff1a;通过Ajax可以给服务器发送请求&#xff0c;并获取服务器响应的数据。…

多元函数的基本概念——“高等数学”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰的内容是多元函数的基本概念&#xff0c;下面&#xff0c;让我们一起进入多元函数的世界吧 平面点集 多元函数的概念 多元函数的极限 多元函数的连续性 有界闭区域上多元连续函数的性质 平面点集 第一个是坐标平…

中间表示- 到达定义分析

基本概念 定义&#xff08;def&#xff09;&#xff1a;对变量的赋值 使用&#xff08;use&#xff09;&#xff1a;对变量值的读取 问题&#xff1a;能把上图中的y替换为3吗&#xff1f;如果能&#xff0c;这称之为“常量传播”优化。 该问题等价于&#xff0c;有哪些对变量y…

R730服务器热插拔换磁盘(raid阵列)

r730服务器发现磁盘闪橙等&#xff0c;说明磁盘报警了&#xff0c;这时候我们就要换磁盘了。 由于本服务器磁盘是raid5的阵列磁盘&#xff0c;所以要采用热插拔的方式换磁盘。 这边要注意的是&#xff0c;不能关机的时候&#xff0c;直接来换磁盘。 因为关机换磁盘&#xff0c…

golang指针相关

指针相关的部分实在是没有搞太明白&#xff0c;抽时间来总结下。 1.指针相关基础知识 比如现在有一句话&#xff1a;『谜底666』&#xff0c;这句话在程序中一启动&#xff0c;就要加载到内存中&#xff0c;假如内存地址0x123456&#xff0c;然后我们可以将这句话复制给变量A&…

什么是服务架构?微服务架构的优势又是什么?

文章目录1.1 单体架构1.2 分布式架构1.3 微服务架构1.4 单体架构和分布式架构的区分1.4 服务架构的优劣点1.4.1 单体架构1.4.2 分布式架构1.4.3 微服务架构1.5 总结1.1 单体架构 单体架构&#xff08;Monolithic Architecture&#xff09;是一种传统的软件架构&#xff0c;它将…

算法学习day56

算法学习day561.力扣583. 两个字符串的删除操作1.1 题目描述1.2分析1.3 代码2.力扣72. 编辑距离2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣583. 两个字符串的删除操作 1.1 题目描述 题目描述&#xff1a; 给定两个单词word1和word2&#xff0c;找到使得word1和word2相同…

探索数据结构之精髓:单链表解密

文章目录1. 前言2. 单链表的特点3. 单链表的基础操作&#x1f351; 接口总览&#x1f351; 初始化操作&#x1f351; 插入操作&#x1f345; 优化操作&#x1f351; 删除操作&#x1f345; 优化操作&#x1f351; 获取元素&#x1f345; 按置查找&#x1f345; 按值查找&#x…

从C出发 20 --- 函数参数深度剖析

我们在编写这个函数的时候参数 n 的值具体是多少&#xff1f; 在编写一个函数的时候参数值是没法确定的&#xff0c;所以将 (int n) 这个参数命名为形参 那么这个参数的值什么时候指定&#xff0c;具体函数调用的时候指定 比如 在main 里面调用 实参用来初始化形参 初始化之…

安装多个版本的Node.js的方法

要在同一台计算机上安装多个版本的Node.js&#xff0c;可以使用以下几种方法&#xff1a; 使用nvm&#xff08;Node Version Manager&#xff09;&#xff1a;nvm是一个用于管理多个Active Node.js版本的工具。您可以使用nvm轻松地在系统中安装、卸载和切换不同版本的Node.js。…

Leetcode每日一题——“消失的数字”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰又开新专栏了&#xff0c;以后会在Leetcode上面进行刷题&#xff0c;尽量每天写一道&#xff0c;请大家监督我&#xff01;&#xff01;&#xff01;好啦&#xff0c;让我们进入Leetcode的世界吧 力扣 对于这道题目&a…

南卡OE Pro上线!开放式耳机新里程碑!前所未有的音质舒适双冠

当前耳机市场放眼望去几乎都是TWS的天下&#xff0c;但是大多数的蓝牙耳机都存在着以下痛点&#xff1a;长时间佩戴涨耳、出现听诊器效应、耳朵内部发痒以及与外界声音隔开缺乏安全性等等问题。 为此&#xff0c;国内智能声学品牌厂商NANK南卡针对用户的特点&#xff0c;于近日…

中小企业如何实施知识管理策略?

随着信息化建设的深入&#xff0c;IT不仅成为企业运营的基础平台&#xff0c;而且在ERP、CRM、OA等信息系统内沉淀了大量的知识&#xff0c;成为企业创新的源泉&#xff0c;大中企业信息化建设中知识管理越来越重要。 应该如何实现知识管理呢&#xff1f; 知识管理本身就属于企…

Flutter系列(七)ListView 图文列表详解

完整工程&#xff1a; Flutter系列&#xff08;四&#xff09;底部导航顶部导航图文列表完整代码_摸金青年v的博客-CSDN博客 详细解读: Flutter系列&#xff08;五&#xff09;底部导航详解_摸金青年v的博客-CSDN博客 Flutter系列&#xff08;六&#xff09;顶部导航详解_摸金青…

初学SSM时做的-IKUN图书管理系统

项目介绍 项目工具:IntelliJ IDEA 2021.2.2 图书后台管理系统&#xff0c;采用SpringBootMybatiusThymeleaf&#xff0c;页面使用Element框架&#xff0c;使用RESTful API风格编写接口。 数据库使用mysql 已实现功能 基本增删改查,联表查询 拦截器登录验证 项目技术栈 Spr…

4.15--设计模式之创建型之责任链模式(总复习版本)---脚踏实地,一步一个脚印

一、什么是责任链模式&#xff1a; 责任链模式属于行为型模式&#xff0c;是为请求创建了一个接收者对象的链&#xff0c;将链中每一个节点看作是一个对象&#xff0c;每个节点处理的请求均不同&#xff0c;且内部自动维护一个下一节点对象。 当一个请求从链式的首端发出时&a…

C++(Qt)软件调试---qmake编译优化和生成调试信息(9)

C(Qt)软件调试—qmake编译优化和生成调试信息&#xff08;9&#xff09; 文章目录C(Qt)软件调试---qmake编译优化和生成调试信息&#xff08;9&#xff09;1、前言1.1 编译器优化是什么1.2 调试信息是什么1.3 测试环境2、Qt编译模式说明3、比较Linux下Qt三种编译模式1.1 编译生…