Dataframe合并大两个df如何完美融合

news2024/9/21 18:37:39

哈喽,大家好,我是木头左!

一、引言

在数据分析过程中,经常需要将多个DataFrame进行合并。本文将详细介绍如何使用pandas库中的merge()、concat()、join()等方法实现两个DataFrame的合并,以及各种方法的适用场景和优缺点。

二、merge()方法

  1. 基本用法
import pandas as pd

# 创建两个示例DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'key': ['K0', 'K1', 'K0', 'K1']})

df2 = pd.DataFrame({'C': ['C0', 'C1'],
                    'D': ['D0', 'D1']},
                   index=['K0', 'K1'])

# 使用merge()方法合并
result = pd.merge(df1, df2, left_on='key', right_index=True)
print(result)
  1. 参数详解
  • on: 用于合并的列名,可以是单个列名或多个列名组成的列表。如果指定了left_on和right_on,则表示左右两个DataFrame中需要合并的列名。
  • left_on: 左侧DataFrame中用于合并的列名。如果未指定,则默认为所有非索引列。
  • right_on: 右侧DataFrame中用于合并的列名。如果未指定,则默认为所有非索引列。
  • left_index: 是否使用左侧DataFrame的索引作为合并键。如果为True,则忽略其他合并键。
  • right_index: 是否使用右侧DataFrame的索引作为合并键。如果为True,则忽略其他合并键。
  • how: 合并方式,包括’left’(左连接,保留左侧所有行)、‘right’(右连接,保留右侧所有行)、‘outer’(全外连接,保留两个DataFrame的所有行)和’inner’(内连接,只保留两个DataFrame有共同值的行)。默认为’inner’。
  • sort: 是否对合并后的DataFrame进行排序。默认为False。
  • suffixes: 当两个DataFrame中有重复的列名时,可以使用后缀来区分。默认为(‘_x’, ‘_y’)。
  • copy: 是否复制数据。默认为False。如果为True,则返回一个新的DataFrame;如果为False,则在原DataFrame上进行操作。
  1. 适用场景与优缺点
  • 适用场景:适用于两个DataFrame中有一列或多列可以作为合并键的情况。
  • 优点:可以根据指定的列进行灵活的合并操作。
  • 缺点:当需要合并的列较多时,代码较为繁琐。

三、concat()方法

  1. 基本用法
import pandas as pd

# 创建两个示例DataFrame
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                    'B': ['B0', 'B1', 'B2', 'B3'],
                    'key': ['K0', 'K1', 'K0', 'K1']})

df2 = pd.DataFrame({'C': ['C0', 'C1'],
                    'D': ['D0', 'D1']})

# 使用concat()方法合并
result = pd.concat([df1, df2], axis=1)
print(result)
  1. 参数详解
  • objs: 需要合并的DataFrame列表。如果没有指定axis参数,则默认按行方向进行合并。如果指定了axis参数,则按照指定的方向进行合并。
  • axis: 合并方向,包括0(纵向合并,即按行方向合并)和1(横向合并,即按列方向合并)。默认为0。
  • join: 是否使用索引进行合并。默认为False。如果为True,则根据索引进行合并;如果为False,则忽略索引进行合并。注意:当axis为1时,join参数无效。
  • ignore_index: 是否重置索引。默认为False。如果为True,则在合并后重置索引;如果为False,则保留原始索引。注意:当axis为1时,ignore_index参数无效。
  • keys: 当需要保留原始索引时,可以使用keys参数指定一个字典,字典的键为原始索引的名称,值为新的索引名称。默认为None。注意:当axis为1时,keys参数无效。
  • levels: 当需要重置索引时,可以使用levels参数指定一个列表,列表中的元素将作为新的索引级别。默认为None。注意:当axis为1时,levels参数无效。
  • names: 当需要重置索引时,可以使用names参数指定一个列表,列表中的元素将作为新的列名。默认为None。注意:当axis为1时,names参数无效。
  • verify_integrity: 是否检查新生成的对象是否有重复的索引。默认为False。如果为True,则在合并后检查是否有重复的索引;如果为False,则不进行检查。注意:当axis为1时,verify_integrity参数无效。
  • sort: 是否对合并后的DataFrame进行排序。默认为False。如果为True,则按照指定的方式进行排序;如果为False,则不进行排序。注意:当axis为1时,sort参数无效。
  • copy: 是否复制数据。默认为False。如果为True,则返回一个新的DataFrame;如果为False,则在原DataFrame上进行操作。注意:当axis为1时,copy参数无效。
  1. 适用场景与优缺点
  • 适用场景:适用于需要将多个DataFrame按照指定的方向进行纵向或横向合并的场景。
  • 优点:可以方便地将多个DataFrame按照指定的方向进行纵向或横向合并。
  • 缺点:当需要合并的DataFrame较多时,代码较为繁琐。此外,无法实现复杂的多级索引合并操作。

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

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

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

相关文章

【靶场】pikachu—RCE

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍收藏💗支持一下哦 【靶场】pikachu—RCE 第一关 exec "ping"第二关 exec "eval" 第一关 exec “ping” 尝试 ping 一下本地12…

文生软件!国内没有任何一家大模型能做到的事,他却做到了!

书接上回,我们一手实测了一下阶跃星辰新出的文生图大模型Step-1X,效果非常的不错。 感兴趣的小伙伴们可以去看一下哈:[有彩蛋]大模型独角兽阶跃星辰文生图模型Step-1X上线,效果具说很炸裂?快来看一手实测!…

24. Redis缓存问题

1. 前言 在小型项目中(例如大部分 toB 业务),Redis 被作为缓存,我们无需过多关注缓存的性能,但是对于高并发的场景(例如 toC 的在线电商业务),在商品秒杀或者库存抢购的时候,Redis 也可能存在诸多潜在的问题,例如缓存穿透、缓存雪崩。 2. 缓存问题 2.1 缓存穿透 面…

「OC」iOS事件处理流程

「OC」初识iOS事件处理流程 文章目录 「OC」初识iOS事件处理流程触摸事件触摸事件的响应周期事件 响应者UIEventUITouchUIResponder 触摸流程系统响应阶段APP响应阶段寻找最佳响应者 构成响应链 寻找最佳响应者和响应链的区别总结参考资料 触摸事件 iOS的事件有好几种&#xf…

PDF到CAD转换:四大实用工具指南!

将纸质图纸或PDF文件转化为可编辑的CAD文件是一项基本技能。无论是为了更好地进行团队协作,还是为了简化设计流程,找到一个合适的PDF转CAD工具都是至关重要的。本文将深入探讨几款主流工具的功能特色,并结合实际使用经验分享个人见解。 福昕…

机器之心 | 预训练无需注意力,扩展到4096个token不成问题,与BERT相当

本文来源公众号“机器之心”,仅用于学术分享,侵权删,干货满满。 原文链接:预训练无需注意力,扩展到4096个token不成问题,与BERT相当 本文提出了双向门控 SSM(BiGS)模型,…

vben admin里面换行useTable里面的columns

{title: 标题,dataIndex: systemName,width: 300, minWidth: 300,customRender: ({ text }: { text: string }) > {return ${text};},}, customRender: ({ text }: { text: string }) > { return ${text}; },这行代码. 方法② ellipsis: false,加这个进去&#xff…

半导体产业核心环节有哪些?2024年中国半导体产业研究报告大揭秘!

半导体指常温下导电性能介于导体与绝缘体之间的材料。半导体应用在集成电路、消费电子、通信系统、光伏发电、照明应用、大功率电源转换等领域。半导体产业经济则是指以半导体产品为核心的经济活动,包括芯片设计、制造、封装测试及应用等。它是全球经济的支柱&#…

Linux 硬件学习 s3c2440 arm920t蜂鸣器

1.查找手册时钟图,输入12m想要通过pll得到400m的信号 2.对比pll值,找到最近的为405,得到pll中mdiv为127,pdiv为2,sdiv为1 3.想要得到fclk400,hclk100,pclk50,对比分频比例&#xff0…

Unet改进24:添加DualConv||轻量级深度神经网络的双卷积核

本文内容:在不同位置添加DualConv 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 卷积神经网络(CNN)架构通常对内存和计算要求很高,这使得它们在硬件资源有限的嵌入式系统中不可行。 我们提出了双卷积核(DualConv)来构建轻量级深度神经网络。DualConv结…

亚马逊云科技 Gen BI 2024-09-04 上海站QuickSight

机缘 我又来了,感觉不上班比上班还要忙 天天像特种工一天,今天有度过的充实的一天,上午去图书馆,下午去了 亚马逊云科技 Gen BI 技术体验日 。 具体照片可以去 这里看 哈哈,这个就是我了 商业智能的趋势 根据艾瑞咨…

WildCard平台:什么是 ChatGPT 随心用?什么是 Claude 随心用?什么是随心用全能套餐?

最近胖虎收到很多私信都在询问,很多人搞不清楚什么是 ChatGPT 随心用?什么是 Claude 随心用?什么是随心用全能套餐?下面就对三种套餐做了全面的QA解答。 如果想直接使用随心用,或者订阅ChatGPT,或者支付 C…

示波器基础知识汇总(1)

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1、电子信号2、波属性①、幅度②、相移③、周期④、频率⑤、波形正弦波方波/矩形波三角波/锯齿波脉冲复合波 3、信…

YOLOv9模型训练或测试过程中,无法打印模型的GFLOPs

项目场景: 在YOLOv9模型的改进中,常常需要替换一些模块来提高模型的精度。但在评价模型大小规模的时候需要根据模型的参数量、计算量进行评定,一般在模型的训练文件train.py,或者是test.py还有models/yolo.py都会输出这些数据。 …

idea单元测试报错找不到主类

报错截图 主要是单测中没有配置类 在下面的command line 中选择jar manifest 因为条参数过长,这里设置只使用主类 详细解释见: https://www.jianshu.com/p/8322b3b17040

Web开发的艺术:C#开发中实现代码简洁性与规范性的终极指南

一、变量的要求 变量名 1.简短有意义: 合适: student_count,student_ids,student_enable_list, water_price 不合适: numberOfItemsInTheCart, totalPriceOfTheOrderInTheShoppingCart,temp, data,list 2.变量名之间不要太像: 合适: totalAmount, disc…

传统CV算法——边缘检测算法Canny算法实战

Canny 算法 边缘:我的理解是在图像处理的过程中,针对我们图像处理的过程中,梯度变化以较大的地方能够让我们能够快速辨识,针对一个人脸,脸上有一些平滑的地方(没错我针对美颜的),与…

JavaScript 条件分支语句if...else

if 语句 只有当指定条件为 true 时&#xff0c;该语句才会执行代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name…

Introduction to Deep Learning with PyTorch

1、Introduction to PyTorch, a Deep Learning Library 1.1、Importing PyTorch and related packages import torch# supports: ## image data with torchvision ## audio data with torchaudio ## text data with torchtext 1.2、Tensors: the building blocks of network…

磁盘加密工具 | VeraCrypt v1.26.15 绿色版

VeraCrypt 是一个开源项目&#xff0c;旨在提供强大的加密解决方案&#xff0c;以创建和管理加密的磁盘分区和加密容器。它继承了著名的加密软件 TrueCrypt 的特性&#xff0c;并在此基础上进行了扩展和改进。 主要特性 1. 高级加密算法 VeraCrypt 支持多种加密算法&#xf…