Pandas 11-多表联合

2024-09-03 15:20
文章标签 联合 多表 pandas

本文主要是介绍Pandas 11-多表联合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本概念

  • DataFrame: 一个二维的表格数据结构,类似于电子表格或 SQL 表。
  • join: 将两个 DataFrame 按照某个共同的列(键)进行合并。

常见的 join 类型

  1. inner join: 只保留两个 DataFrame 中键匹配的行。
  2. left join: 保留左边 DataFrame 的所有行,右边 DataFrame 中没有匹配的行用 NaN 填充。
  3. right join: 保留右边 DataFrame 的所有行,左边 DataFrame 中没有匹配的行用 NaN 填充。
  4. outer join: 保留两个 DataFrame 中的所有行,没有匹配的行用 NaN 填充。

使用方法

Pandas 提供了 mergejoin 两种方法来进行表的合并。

使用 merge 方法
import pandas as pd  # 创建示例 DataFrame  
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})  
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value2': [4, 5, 6]})  # inner join  
result_inner = pd.merge(df1, df2, on='key', how='inner')  # left join  
result_left = pd.merge(df1, df2, on='key', how='left')  # right join  
result_right = pd.merge(df1, df2, on='key', how='right')  # outer join  
result_outer = pd.merge(df1, df2, on='key', how='outer')  
使用 join 方法

join 方法默认是基于索引进行合并,但也可以通过 on 参数指定列。

# 创建示例 DataFrame  
df1 = pd.DataFrame({'value1': [1, 2, 3]}, index=['A', 'B', 'C'])  
df2 = pd.DataFrame({'value2': [4, 5, 6]}, index=['B', 'C', 'D'])  # inner join  
result_inner = df1.join(df2, how='inner')  # left join  
result_left = df1.join(df2, how='left')  # right join  
result_right = df1.join(df2, how='right')  # outer join  
result_outer = df1.join(df2, how='outer')  

多表联合 join

当需要将多个 DataFrame 进行联合 join 时,可以多次调用 mergejoin 方法。

# 创建示例 DataFrame  
df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'value1': [1, 2, 3]})  
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'value2': [4, 5, 6]})  
df3 = pd.DataFrame({'key': ['C', 'D', 'E'], 'value3': [7, 8, 9]})  # 先合并 df1 和 df2,再合并结果与 df3  
result = pd.merge(pd.merge(df1, df2, on='key', how='outer'), df3, on='key', how='outer')  

注意事项

  1. 键的名称: 确保两个 DataFrame 中用于合并的列名称相同。
  2. 数据类型: 确保用于合并的列数据类型一致,避免因数据类型不匹配导致的合并错误。
  3. 性能: 对于大数据集,考虑使用更高效的数据库或优化 Pandas 操作。

这篇关于Pandas 11-多表联合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1133327

相关文章

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

【Python从入门到进阶】64、Pandas如何实现数据的Concat合并

接上篇《63.Pandas如何实现数据的Merge》 上一篇我们学习了Pandas如何实现数据的Merge,本篇我们来继续学习Pandas如何实现数据的Concat合并。 一、引言 在数据处理过程中,经常需要将多个数据集合并为一个统一的数据集,以便进行进一步的分析或建模。这种需求在多种场景下都非常常见,比如合并不同来源的数据集以获取更全面的信息、将时间序列数据按时间顺序拼接起来以观察长期趋势等

C和指针:结构体(struct)和联合(union)

结构体和联合 结构体 结构体包含一些数据成员,每个成员可能具有不同的类型。 数组的元素长度相同,可以通过下标访问(转换为指针)。但是结构体的成员可能长度不同,所以不能用下标来访问它们。成员有自己的名字,可以通过名字访问成员。 结构声明 在声明结构时,必须列出它包含的所有成员。 struct tag {member-list} variable-list ; 定义一个结构体变量x(包含

MySQL基础(7)- 多表查询

目录 一、笛卡尔积的错误与正确的多表查询 1.出现笛卡尔积错误 2.正确的多表查询:需要有连接条件 3.查询多个表中都存在的字段 4.SELECT和WHERE中使用表的别名 二、等值连接vs非等值连接、自连接vs非自连接 1.等值连接  vs  非等值连接 2.自连接  vs  非自连接 3.内连接  vs  外连接 4.UNION  和 UNION ALL的使用 5.7种J

win7下安装Canopy(EPD) 及 Pandas进行python数据分析

先安装好canopy,具体安装版本看自己需要那种,我本来是打算安装win764位的,却发现下载总是出现错误,无奈只能下载了32位的! https://store.enthought.com/downloads/#default 安装好之后,参考如下连接,进行检验: 之后再根据下面提供的连接进行操作,一般是没问题的! http://jingyan.baidu.com/article/5d6

11Python的Pandas:可视化

Pandas本身并没有直接的可视化功能,但它与其他Python库(如Matplotlib和Seaborn)无缝集成,允许你快速创建各种图表和可视化。这里是一些使用Pandas数据进行可视化的常见方法: 1. 使用Matplotlib Pandas中的plot()方法实际上是基于Matplotlib的,你可以使用它来绘制各种基本图表,例如折线图、柱状图、散点图等。 import pandas

AMEsim和Simulink联合仿真生成新的.mexw64液压模型文件

AMEsim和Simulink进行联合仿真非常重要的就是AMEsim经过第四阶段Simulation会在相同文件下面生成一个与AMEsim液压模型相同名字的.mexw64文件,在Simulink进行联合仿真的S-Function需要找的也就是这个文件,只不过输入的时候除了液压模型名字之外,后面有一个短下划线。 简而言之: AMEsim和Simulink联合仿真, 首先是需要AMEsim软

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

【自动驾驶】控制算法(八)横向控制Ⅱ | Carsim 与 Matlab 联合仿真基本操作

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作,荣幸在CSDN首发🐒 若您觉得内容有价值,还请评论告知一声,以便更多人受益。 转载请注明出处,尊重原创,从我做起。 👍 点赞、评论、收藏,三连走一波,让我们一起养成好习惯😜 在这里,您将