python DataFrame数据合并 merge()、concat()方法

article/2025/10/6 1:10:31

文章目录

  • merge()
    • 1.常规合并
      • ①方法1
      • ②方法2
      • 重要参数
      • 合并方式 left right outer inner
        • 准备数据‘
        • inner(默认)
        • outer
        • left
        • right
    • 2.多对一合并
    • 3.多对多合并
  • concat()
    • 1.相同字段的表首位相连
    • 2.横向表合并(行对齐)
    • 3.交叉合并


merge()


1.常规合并

①方法1

指定一个参照列,以该列为准,合并其他列。

import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],'num1': [120, 101, 104],'num2': [110, 102, 121],'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '002', '003'],'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")
df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

在这里插入图片描述


②方法2

要实现该合并,也可以通过索引来合并,即以index列为基准。将left_index 和 right_index 都设置为True
即可。(left_index 和 right_index 都默认为False,left_index表示左表以左表数据的index为基准, right_index表示右表以右表数据的index为基准。)

import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],'num1': [120, 101, 104],'num2': [110, 102, 121],'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '002', '003'],'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")df_merge = pd.merge(df1, df2, left_index=True, right_index=True)
print(df_merge)

在这里插入图片描述
相比方法①,区别在于,如图,方法②合并出的数据中有重复列。


重要参数

pd.merge(right,how=‘inner’, on=“None”, left_on=“None”, right_on=“None”, left_index=False, right_index=False )

参数描述
left左表,合并对象,DataFrame或Series
right右表,合并对象,DataFrame或Series
how合并方式,可以是left(左合并), right(右合并), outer(外合并), inner(内合并)
on基准列 的列名
left_on左表基准列列名
right_on右表基准列列名
left_index左列是否以index为基准,默认False,否
right_index右列是否以index为基准,默认False,否

其中,left_index与right_index 不能与 on 同时指定。

合并方式 left right outer inner

准备数据‘

新准备一组数据:

import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],'num1': [120, 101, 104],'num2': [110, 102, 121],'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '004', '003'],'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

在这里插入图片描述


inner(默认)

使用来自两个数据集的键的交集

df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

在这里插入图片描述


outer

使用来自两个数据集的键的并集

df_merge = pd.merge(df1, df2, on='id', how="outer")
print(df_merge)

在这里插入图片描述


left

使用来自左数据集的键

df_merge = pd.merge(df1, df2, on='id', how='left')
print(df_merge)

在这里插入图片描述


right

使用来自右数据集的键

df_merge = pd.merge(df1, df2, on='id', how='right')
print(df_merge)

在这里插入图片描述


2.多对一合并

import pandas as pddf1 = pd.DataFrame({'id': ['001', '002', '003'],'num1': [120, 101, 104],'num2': [110, 102, 121],'num3': [105, 120, 113]})
df2 = pd.DataFrame({'id': ['001', '001', '003'],'num4': [80, 86, 79]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

在这里插入图片描述
如图,df2中有重复id1的数据。

合并

df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

合并结果如图所示:
在这里插入图片描述
依然按照默认的Inner方式,使用来自两个数据集的键的交集。且重复的键的行会在合并结果中体现为多行。


3.多对多合并

如图表1和表2中都存在多行id重复的。

import pandas as pd
df1 = pd.DataFrame({'id': ['001', '002', '002', '002', '003'],'num1': [120, 101, 104, 114, 123],'num2': [110, 102, 121, 113, 126],'num3': [105, 120, 113, 124, 128]})
df2 = pd.DataFrame({'id': ['001', '001', '002', '003', '001'],'num4': [80, 86, 79, 88, 93]})
print(df1)
print("=======================================")
print(df2)
print("=======================================")

在这里插入图片描述

df_merge = pd.merge(df1, df2, on='id')
print(df_merge)

在这里插入图片描述


concat()

pd.concat(objs, axis=0, join=‘outer’, ignore_index:bool=False,keys=None,levels=None,names=None, verify_integrity:bool=False,sort:bool=False,copy:bool=True)

参数描述
objsSeries,DataFrame或Panel对象的序列或映射
axis默认为0,表示列。如果为1则表示行。
join默认为"outer",也可以为"inner"
ignore_index默认为False,表示保留索引(不忽略)。设为True则表示忽略索引。

其他重要参数通过实例说明。

1.相同字段的表首位相连

首先准备三组DataFrame数据:

import pandas as pd
df1 = pd.DataFrame({'id': ['001', '002', '003'],'num1': [120, 114, 123],'num2': [110, 102, 121],'num3': [113, 124, 128]})
df2 = pd.DataFrame({'id': ['004', '005'],'num1': [120, 101],'num2': [113, 126],'num3': [105, 128]})
df3 = pd.DataFrame({'id': ['007', '008', '009'],'num1': [120, 101, 125],'num2': [113, 126, 163],'num3': [105, 128, 114]})print(df1)
print("=======================================")
print(df2)
print("=======================================")
print(df3)

在这里插入图片描述
合并

dfs = [df1, df2, df3]
result = pd.concat(dfs)
print(result)

在这里插入图片描述

如果想要在合并后,标记一下数据都来自于哪张表或者数据的某类别,则也可以给concat加上 参数keys

result = pd.concat(dfs, keys=['table1', 'table2', 'table3'])
print(result)

在这里插入图片描述
此时,添加的keys与原来的index组成元组,共同成为新的index。

print(result.index)

在这里插入图片描述


2.横向表合并(行对齐)

准备两组DataFrame数据:

import pandas as pd
df1 = pd.DataFrame({'num1': [120, 114, 123],'num2': [110, 102, 121],'num3': [113, 124, 128]}, index=['001', '002', '003'])
df2 = pd.DataFrame({'num3': [117, 120, 101, 126],'num5': [113, 125, 126, 133],'num6': [105, 130, 128, 128]}, index=['002', '003', '004', '005'])print(df1)
print("=======================================")
print(df2)

在这里插入图片描述

当axis为默认值0时:

result = pd.concat([df1, df2])
print(result)

在这里插入图片描述

横向合并需要将axis设置为1

result = pd.concat([df1, df2], axis=1)
print(result)

在这里插入图片描述


对比以上输出差异。

  • axis=0时,即默认纵向合并时,如果出现重复的行,则会同时体现在结果中
  • axis=1时,即横向合并时,如果出现重复的列,则会同时体现在结果中。

3.交叉合并

result = pd.concat([df1, df2], axis=1, join='inner')
print(result)

在这里插入图片描述



http://chatgpt.dhexx.cn/article/ZMyOIIAk.shtml

相关文章

python数据分析之pandas数据合并

🌷这一章节来介绍pandas中的DateFrame实现数据合并的操作,类似于SQL中的内连接、外连接的操作. 目录 1. 合并数据的方式2. Merge合并方法2.1 连接2.1.1 直接用on连接2.1.2 采用left_on 和 right_on连接2.1.3 采用left_index 和 right_index连接 2.2 合并…

Pandas数据合并与拼接的5种方法

pandas实现数据的合并与拼接 目录 一、DataFrame.concat:沿着一条轴,将多个对象堆叠到一起 二、DataFrame.merge:类似 vlookup 三、DataFrame.join:主要用于索引上的合并 四、Series.append:纵向追加Series 五、…

Pandas 数据处理 | 多个数据表怎么合并(merge),你了解么?

Pands 两个数据列表合并方法总结; merge() 函数用于合并两个 DataFrame 对象或 Series,数据处理时经常会用到这个函数,官网给出该函数的定义如下: pandas.merge(left, right, how: str ‘inner’, onNone, left_onNone, right_…

[Pandas] 数据合并 pd.merge

实现类似SQL的join操作,通过pd.merge()方法可以自由灵活地操作各种逻辑的数据连接、合并等操作 可以将两个DataFrame或Series合并,最终返回一个合并后的DataFrame 语法 pd.merge(left, right, how inner, on None, left_on None, right_on None,l…

6.1 多数据源合并

1.案例介绍 通过Kettle工具将A公司和B公司的手机日销售数据合并到一个数据源(数据表company)中,也就是对文件company_a.csv和数据表company_b中的数据进行合并操作,并输出到数据表company中。 2.数据准备 假设,某公…

数据合并之concat、append、merge和join

Pandas 是一套用于 Python 的快速、高效的数据分析工具。它可以用于数据挖掘和数据分析,同时也提供数据清洗功能。本文将详细讲解数据合并与连接,目录如下: ① concat 一.定义 concat函数可以在两个维度上对数据进行拼接,默认纵向…

这些数据合并的神操作,你掌握几个?

导读:在数据分析过程中,有时候需要将不同的数据文件进行合并处理。本文主要介绍三种数据合并方法。 Pandas提供了多功能、高性能的内存连接操作,本质上类似于SQL等关系数据库,比如,merge、join、concat等方法可以方便地…

6、数据的合并

目录 一、添加变量即横向合并。 二、添加个案即纵向合并 在实际工作中,为了提高效率,经常需要将一份数据分成几部分分别录入,或为了便于分析,又将几个数据文件合并成一个总的数据文件。为此,SPSS提供了两种合并数据文…

【数据科学】05 数据合并(merge、concat、combine)与数据清洗(缺失值、重复值、内容和格式)

文章目录 1. 数据合并1.1 merge()合并1.2 concat()合并1.3 combine()合并 2. 数据清洗2.1 缺失值2.2 重复值2.3 内容与格式清洗 1. 数据合并 实际应用中,需要分析的数据可能来自不同的数据集,因此在开始数据分析之前,需要先将不同的数据集合…

Gradle 入门

1、Gradle 入门 1.1 Gradle 简介 Gradle 是一款 Google 推出的基于JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性 依赖管理、废弃了繁杂的 xml 文件,转而使用简洁的、支持多种语言(例如:java、gro…

Gradle【扫盲】之简易使用教程

官网地址 https://gradle.org/版本选择 如果使用的是idea,可以在idea的plug目录下查看支持的gradle的版本: 进入目录: 那我们到官网下载对应版本的gradle即可 Gradle下载及配置 进入官网,查看发行版本 选择对应的安装包 b…

Linux 安装gradle完整教程

Linux 安装gradle 1.下载gradle https://gradle.org/install/ 选择版本下载 点击下载 也可以在这里下载历史版本 https://services.gradle.org/distributions/ 2.将包上传到服务器,我这里下载的包是6.7的你们可以下载各自需要的版本 zip包解压 unzip gradle-8.…

gradle快速入门

1.Gradle 入门 1.1 Gradle 简介 Gradle 是一款Google 推出的基于JVM、通用灵活的项目构建工具,支持Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等…

Gradle下载安装教程

前言 1.gradle和maven一样都是用来构建java程序的,maven2004年开始兴起,gradle2012年开始诞生,既然已经有了maven这么成熟的构建工具为什么还有gradle的诞生呢,因为gradle有很多地方比maven做的更好,例如gradle采用gro…

Gradle 15分钟入门教程

1-Gradle入门介绍 在阅读或实践本文中的实例前,必须首先确保已将Gradle插件安装到Eclipse中。如果没有,可以点击下面的链接查看Gradle安装说明: - http://www.yiibai.com/gradle/how-install-gradle-windows.html 本教程的目标: …

gradle安装与入门

1. Gradle安装(本地也可不安装,不安装gradle配置选择gradle wrapper) 下载地址:http://services.gradle.org/distributions/ 下载你所需要对应的版本,gradle-4.6.1-bin.zip 下载后解压到你想要的目录 设置环境变量 新建系统变量&…

Android—Gradle教程(一)

前言 在前几篇中,讲解了Groovy的基础语法,学习新语法过程总是枯燥的,但为了更好的掌握Gradle,那就必须经过该过程。当然从这一篇将会从零基础开始,开展对Gradle的讲解。 1. 掌握Gradle基础 1.1 环境配置 去官网下载…

Gradle使用教程

前言 相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服: Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文…

gradle入门简介以及安装

一、简介 java作为一门世界级主流编程语言,有一款高效易用的项目自动化构建工具是java开发者共同追求的心愿和目标。先是2000年Ant,后有2004年Maven两个工具的诞生,都在java市场上取得了巨大的成功。但是二者都有一定的不足和局限性。 2012年…

【构建工具】Gradle中文教程

文章目录 Gradle 简介Gradle 概述基于声明的构建和基于约定的构建为以依赖为基础的编程方式提供语言支持构建结构化深度 APIGradle 的扩展多项目构建多种方式管理依赖Gradle 是第一个构建集成工具易于移植GroovyThe Gradle wrapper自由和开源 为什么使用 Groovy? Gradle 安装先…