数据合并--Pandas

news2024/9/24 11:30:16

1. 键匹配合并:merge()函数

1.1 函数功能

合并DataFrame或者命名的Series,命名的Series被视为单列的DataFrame

1.2 函数语法

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=None, indicator=False, validate=None)

1.3 函数参数

参数含义
leftDataFrame或者命名的Series
rightDataFrame或者命名的Series
how合并方式:left:左合并;right:右合并;outer:并集;inner:取交集;cross:两个DataFrame的笛卡尔积;默认为:inner方式
on合并的键,当两个DataFrame中均存在该键时使用
left_on指定左边DataFrame中的键
right_on指定右边DataFrame中的键
left_index布尔型,默认取值为False,不清楚具体用法
right_index布尔型,默认取值为False,不清楚具体用法
sort布尔型,默认为True,不太理解
suffixes合并两个DataFrame时,除键外还包含相同的列,如何对列进行命名,默认为(_x,_y),可以自己定义:长度为2的字符串序列
copy默认取值为True,结果DataFrame为新的DataFrame
indicator是否新增一列表名数据来源的列,数据来源:left_only:左边DataFrame;right_only右边DataFrame;both:两个DataFrame
validate,字符串,可选参数,判定是否是指定的合并类型:“one_to_one” or “1:1”;“one_to_many” or “1:m”;“many_to_one” or “m:1”;“many_to_many” or “m:m”

1.3.1 数据合并:默认合并方式

默认合并方式为:inner,两个DataFrame均有的数据将会被保留下来。可以观察到两个df中的键有相同的列名:cust_ID,因此,此时不需要单独指定left_on与right_on,可以直接使用on后面跟共同的列名

import pandas as pd
import numpy as np

cust = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\customer.csv',encoding='gbk')
cred = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\credit.csv',encoding='gbk')
print(cust)
print(cred)

data1 = pd.merge(cust, cred, on='cust_ID')
print(data1)

在这里插入图片描述

1.3.2 左/右合并

左合并,以左侧df的数据框为主,将右侧df的内容连接到左侧,左侧df的内容全部保留,右侧有无对应内容以空值填充。同理,可理解右合并。

data2 = pd.merge(cust, cred, on='cust_ID',how='left')
print(data2)
data3 = pd.merge(cust, cred, on='cust_ID',how='right')
print(data3)

在这里插入图片描述

1.3.3 外连接

左右两边的内容均会出现在结果中,对应内容的内容以空值填充

data4 = pd.merge(cust, cred, on='cust_ID',how='outer')
print(data4)

在这里插入图片描述

1.3.4 left_on与right_on

当两个df中的键列名不同时,需要分别指定两个df中的键

cred.rename(columns={'cust_ID':'ID'},inplace=True)
print(cred)
data5 = pd.merge(cust, cred, left_on='cust_ID',right_on='ID')
print(data5)

在这里插入图片描述

1.3.5 指定重复列的名称

cust = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\customer.csv',encoding='gbk')
cred = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\credit.csv',encoding='gbk')
print(cust)
print(cred)
data6=pd.merge(cust, cred, on='cust_ID',suffixes=['_cust','_cred'])
print(data6)

在这里插入图片描述

2. 拼接函数:cancat()

2.1 函数功能

沿着指定轴拼接对象

2.2 函数语法

pandas.concat(objs, *, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=None)

2.3 函数参数

参数含义
objs拼接的对象,可以是
axis沿着哪个轴拼接:0或“index":按行合并;1或”columns":按列合并,默认按行
join合并的时候axis外的索引对其方式: ‘inner’, ‘outer’,默认outer:取并集
ignore_index布尔值,默认为False:保留原来对象的索引值;True:按照0,…n-1重新编排索引
keys添加一级索引,以区分不同的合并对象,默认为None
levels构建多层索引,默认为None
names给层次索引添加标题,默认None
vertify_intergrity布尔值,检验连接后的轴是否存在重复值,默认False:不检查
sort布尔值,默认False,对非拼接方向的索引进行排序
copy默认值True

2.3.1 默认参数拼接

此时拼接的结果按行拼接,列的对其方式是:outer,只有一个df中存在的列进行保留,索引值不会重新排列,保留原来的索引,不添加高一级的层级标题等内容,不对索引值是否重复进行校验。

cust1 = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\cust1.csv',encoding='gbk')
cust2 = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\cust2.csv',encoding='gbk')

print(cust1)
print(cust2)
cus1 = pd.concat([cust1,cust2])
print(cus1)

在这里插入图片描述

2.3.2 拼接只保留共同的列:join=inner

cus1 = pd.concat([cust1,cust2],join='inner')
print(cus1)

在这里插入图片描述

2.3.3 对合并方向的索引列重新标注索引

cus1 = pd.concat([cust1,cust2],join='inner',ignore_index=True)
print(cus1)

在这里插入图片描述

2.3.4 对非拼接方向的索引排序

cus1 = pd.concat([cust1,cust2],join='outer',ignore_index=True,sort=True)
print(cus1)

在这里插入图片描述

2.3.5 纵向拼接:axis=1

cust1 = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\cust1.csv',encoding='gbk')
cust2 = pd.read_csv('C:\\Users\\changyanhua\\Desktop\\cust2.csv',encoding='gbk')

print(cust1)
print(cust2)
cus1 = pd.concat([cust1,cust2],join='outer',axis=1)
print(cus1)

在这里插入图片描述

cus1 = pd.concat([cust1,cust2],join='outer',axis=1,ignore_index=True)
print(cus1)

在这里插入图片描述
可以看到此时对索引进行重新标注是没有意义的,ignore_index=True适用于索引没有实际意义的情况。

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

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

相关文章

最长公共子序列LCA

最长连续公共子序列 题目链接:3692. 最长连续公共子序列 - AcWing题库 /*解法:定义dp[i1][j1]为以a[i]结尾的字符串和b[j]结尾的字符串的最长连续公共子序列那么对于a[i] b[j]的时候 dp[i1][j1] dp[i][j]1否则为0 其他就是细枝末节 */ #include<iostream> #include<…

【shiro】springboot整合shiro

springboot整合shiro&#xff0c;实现用户登录认证&#xff0c;权限校验及rememberMe 1.数据库准备 user 用户表 CREATE TABLE user (id bigint NOT NULL,name varchar(30) DEFAULT NULL,pwd varchar(35) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,ri…

《Java核心技术大会2023》——AIC送书第一期

共同深入探讨 Java 生态&#xff01;直播预约&#xff1a;视频号“IT阅读排行榜” 大会简介 人工智能在22年、23年的再次爆发让Python成为编程语言里最大的赢家&#xff1b;云原生的持续普及令Go、Rust等新生的语言有了进一步叫板传统技术体系的资本与底气。我们必须承认在近…

smale周报

2023.7.7 相关工作近况存在的问题展望 相关工作近况 近期仍就进行3D断层识别实验&#xff0c;实验了很多版本&#xff0c;不同的损失函数和模型&#xff0c;发现当下的效果更好。之前loss一直不正常&#xff0c;改变了之前的一些小问题&#xff0c;使模型和损失函数以及数据匹…

具备捕获 Web2 用户能力的 PoseiSwap,治理通证$POSE再度涨超 360%

Nautilus Chain 是行业内首个模块化 Layer3 架构链&#xff0c;开发者能够基于模块化进行定制化开发&#xff0c;并有望进一步推动 Web3 应用向隐私、合规等方向发展。当然&#xff0c;Nautilus Chain 的特殊之处还在于为生态用户带来丰厚的空投预期&#xff0c;据悉上线 Nauti…

Ubuntu 的移动梦醒了

老实讲&#xff0c;移动版 Ubuntu 在手机、平板上的发展自始至终可能都没有达到过 Canonical 的期望&#xff0c;既然如此&#xff0c;不再勉为其难地坚持下去&#xff0c;或许才是更加明智的做法。 时至今日&#xff0c;官方显然也意识到了这一点&#xff0c;在早些时候发布的…

EPSON机械臂控制记录

我使用的机器人型号为EPSON LS3-4013&#xff0c;在本文中记录了机械臂控制器和电脑连接&#xff0c;及电脑程序控制机械臂的完整流程。 1 USB连接电脑和机械臂 将USB连接电脑和控制器的PC插口。在EPSON RC 软件中选择 设置->电脑和控制器通信。其中默认包括USB通信&#…

标签平滑知识点

一、什么是标签平滑 标签平滑&#xff08;Label smoothing&#xff09;&#xff0c;像L1、L2和dropout一样&#xff0c;是机器学习领域的一种正则化方法&#xff0c;通常用于分类问题&#xff0c;目的是防止模型在训练时过于自信地预测标签&#xff0c;改善泛化能力差的问题。…

OK Print Watch 打印服务监控软件---Crack

O&K Print Watch 是一个服务器端打印监视器。此打印审核工具允许用户控制打印作业、纸张使用情况&#xff0c;并从打印服务器、本地、共享或网络打印机收集统计信息。使用O&K Print Watch&#xff0c;您可以根据许多不同的打印限制为用户定义打印配额。这些功能使用户能…

在Oracle VM VirtualBox 安装ubuntu-22.04.2 后打不开终端处理

1、下载ubuntu-22.04.2-desktop-amd64.iso 下载地址&#xff1a; https://cn.ubuntu.com/download/desktop2、安装 3、直接下一步即可 3、装好系统&#xff0c;发现打不开终端 解决办法&#xff1a;设置->区域与语言 查看语言和格式是否一致&#xff0c;不一致需修改。若…

sqlserver数据库命令行客户端安装

项目情况 项目上需要通过执行sql语句去更新一些功能 直接进入数据库去进行执行太麻烦&#xff0c; 对基础技术人员的要求比较高&#xff0c;执行效率低 参考资料 sqlcmd 实用工具 - SQL Server | Microsoft Learn 下载 ODBC Driver for SQL Server - ODBC Driver for SQL S…

感知机模型

1. 提出问题 问题&#xff1a;有一组训练数据集 T { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T\{(x_1,y_1), (x_2,y_2), \ldots ,(x_N,y_N)\} T{(x1​,y1​),(x2​,y2​),…,(xN​,yN​)} 其中 x i ∈ X R n x_i\in\mathcal{X}R^n xi​∈XRn&#xff0c; y …

Redis【实战篇】---- UV统计

Redis【实战篇】---- UV统计 1. UV统计 - HyperLogLog2. UV统计 - 测试百万数据的统计 1. UV统计 - HyperLogLog 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内…

Linux信号机制

转自&#xff1a;深入理解Linux信号机制(1.0)_城中之城的博客-CSDN博客 一、信号机制概览 相信大家对信号并不陌生&#xff0c;很多人都用过kill命令或者CtrlC组合键杀死过进程&#xff0c;或者遇到过程序因为收到SIGSEGV信号而崩溃的。而对信号的基本原理&#xff0c;估计很…

DenseNet算法实战

DenseNet算法实战 文章目录 DenseNet算法实战[TOC](文章目录) 前言一、设计理念二、网络结构1.DenseNet网络结构2. DenseBlock Transition结构3. DenseBlock 非线性结构 三、代码实现1. 导入相关的包2. DenseBlock 内部结构3. DenseBlock 模块4. Transition 层5. 最后实现Dens…

23款奔驰S400商务型加装原厂前排座椅通风系统,夏天必备的功能

通风座椅的主动通风功能可以迅速将座椅表面温度降至适宜程度&#xff0c;从而确保最佳座椅舒适性。该功能启用后&#xff0c;车内空气透过打孔皮饰座套被吸入座椅内部&#xff0c;持续时间为 8 分钟。然后&#xff0c;风扇会自动改变旋转方向&#xff0c;将更凉爽的环境空气从座…

TIA博途_封装FB或FC块时将未分配参数的管脚隐藏的具体方法示例

TIA博途_封装FB或FC块时将未分配参数的管脚隐藏的具体方法示例 如下图所示&#xff0c;在某个项目中添加一个模拟量平均值滤波FB块&#xff0c;FB块的输入输出接口如图中所示&#xff0c; FB块编写完成后&#xff0c;在OB1中调用该FB块&#xff0c;可以看到需要配置的相关管脚…

Melon库运用——数组篇

头文件片段 // mln_array.hstruct mln_array_attr {void *pool; // 自定义内存池结构指针array_pool_alloc_handler pool_alloc; // 自定义内存池分配函数指针array_pool_free_handler pool_free; // 自定义内存池释放函数指针array_free …

Linux编译器--gcc/g++的使用

1.gcc/g的作用 gcc/g就是将写好的c/c的代码经过预编译/编译/汇编/链接生成可执行程序的过程&#xff0c;这个过程就是编译器的作用。 PS:由于c支持c语言的语法&#xff0c;gcc和g的操作差不多&#xff0c;在这里只讲gcc的使用方法。 2.gcc如何完成 格式 gcc [选项] 要编译的文…

函数指针数组:更高效的代码实现方式——指针进阶(二)

目录 前言 一、函数指针 什么是函数指针 函数指针的使用 二、函数指针数组 什么是函数指针数组 函数指针数组的使用 三、指向函数指针数组的指针 总结 前言 当谈到C语言的高级特性时&#xff0c;函数指针和函数指针数组通常是最常见的话题之一。虽然这些概念可能会让初…