首页 > 其他分享 >3.4 Pandas 数据合并和连接:掌握数据整合的核心技巧

3.4 Pandas 数据合并和连接:掌握数据整合的核心技巧

时间:2025-01-15 12:33:08浏览次数:3  
标签:df 连接 df1 DataFrame ID 3.4 pd 数据 Pandas

3.4 Pandas 数据合并和连接:掌握数据整合的核心技巧

在实际的数据分析工作中,数据往往分散在多个数据源中。为了进行全面的分析,我们需要将这些数据合并或连接在一起。Pandas 提供了强大的工具来实现数据的合并和连接操作。本文将详细介绍如何使用 Pandas 进行数据合并和连接,帮助你掌握数据整合的核心技巧。


1. 数据合并(Merge)

merge() 是 Pandas 中最常用的数据合并方法,它类似于 SQL 中的 JOIN 操作。通过指定键(key),可以将两个 DataFrame 按照某种方式合并。

1.1 基本合并

最简单的合并操作是基于一个或多个共同的列(键)将两个 DataFrame 合并。

import pandas as pd

# 创建两个示例 DataFrame
df1 = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name': ['Alice', 'Bob', 'Charlie']
})

df2 = pd.DataFrame({
    'ID': [2, 3, 4],
    'Age': [24, 27, 22]
})

# 按照 'ID' 列合并
df_merged = pd.merge(df1, df2, on='ID')
print(df_merged)

输出结果:

   ID     Name  Age
0   2      Bob   24
1   3  Charlie   27

1.2 指定合并方式

merge() 方法支持多种合并方式,通过 how 参数可以指定合并的类型:

  • inner:内连接,只保留键匹配的行(默认)。
  • left:左连接,保留左表的所有行,右表匹配不到的行用 NaN 填充。
  • right:右连接,保留右表的所有行,左表匹配不到的行用 NaN 填充。
  • outer:外连接,保留所有行,匹配不到的行用 NaN 填充。
# 左连接
df_left = pd.merge(df1, df2, on='ID', how='left')
print(df_left)

# 外连接
df_outer = pd.merge(df1, df2, on='ID', how='outer')
print(df_outer)

输出结果:

   ID     Name   Age
0   1    Alice   NaN
1   2      Bob  24.0
2   3  Charlie  27.0

   ID     Name   Age
0   1    Alice   NaN
1   2      Bob  24.0
2   3  Charlie  27.0
3   4      NaN  22.0

1.3 多键合并

如果合并的键不止一个,可以通过 on 参数传递一个列名的列表。

# 创建两个示例 DataFrame
df1 = pd.DataFrame({
    'ID': [1, 2, 3],
    'Year': [2020, 2021, 2022],
    'Value': [100, 200, 300]
})

df2 = pd.DataFrame({
    'ID': [2, 3, 4],
    'Year': [2021, 2022, 2023],
    'Value': [250, 350, 450]
})

# 按照 'ID' 和 'Year' 列合并
df_multi_key = pd.merge(df1, df2, on=['ID', 'Year'])
print(df_multi_key)

输出结果:

   ID  Year  Value_x  Value_y
0   2  2021      200      250
1   3  2022      300      350

2. 数据连接(Join)

join() 方法是另一种常用的数据连接方式,它基于索引进行连接,而不是列。join()merge() 的简化版,适用于基于索引的连接操作。

2.1 基本连接

# 创建两个示例 DataFrame
df1 = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [24, 27, 22]
}, index=[1, 2, 3])

df2 = pd.DataFrame({
    'City': ['New York', 'Los Angeles', 'Chicago'],
    'Salary': [50000, 60000, 70000]
}, index=[2, 3, 4])

# 基于索引连接
df_joined = df1.join(df2)
print(df_joined)

输出结果:

      Name  Age         City   Salary
1    Alice   24          NaN      NaN
2      Bob   27     New York  50000.0
3  Charlie   22  Los Angeles  60000.0

2.2 指定连接方式

join() 方法也支持 how 参数,可以指定连接方式(leftrightinnerouter)。

# 外连接
df_outer_joined = df1.join(df2, how='outer')
print(df_outer_joined)

输出结果:

      Name   Age         City   Salary
1    Alice  24.0          NaN      NaN
2      Bob  27.0     New York  50000.0
3  Charlie  22.0  Los Angeles  60000.0
4      NaN   NaN      Chicago  70000.0

3. 数据拼接(Concat)

concat() 方法用于沿指定轴(行或列)拼接多个 DataFrame。它适用于简单的数据堆叠操作。

3.1 沿行拼接

# 创建两个示例 DataFrame
df1 = pd.DataFrame({
    'A': ['A0', 'A1'],
    'B': ['B0', 'B1']
})

df2 = pd.DataFrame({
    'A': ['A2', 'A3'],
    'B': ['B2', 'B3']
})

# 沿行拼接
df_concat_row = pd.concat([df1, df2], axis=0)
print(df_concat_row)

输出结果:

    A   B
0  A0  B0
1  A1  B1
0  A2  B2
1  A3  B3

3.2 沿列拼接

# 沿列拼接
df_concat_col = pd.concat([df1, df2], axis=1)
print(df_concat_col)

输出结果:

    A   B    A   B
0  A0  B0   A2  B2
1  A1  B1   A3  B3

4. 数据追加(Append)

append() 方法用于将一个 DataFrame 追加到另一个 DataFrame 的末尾。它是 concat() 的简化版,专门用于行方向的拼接。

# 追加数据
df_appended = df1.append(df2)
print(df_appended)

输出结果:

    A   B
0  A0  B0
1  A1  B1
0  A2  B2
1  A3  B3

5. 总结

通过本文的介绍,你已经掌握了 Pandas 中数据合并、连接、拼接和追加的核心操作。这些技巧将帮助你在实际项目中更高效地整合和分析数据。以下是本文的主要内容回顾:

  1. 数据合并:使用 merge() 方法实现基于列的合并,支持多种合并方式。
  2. 数据连接:使用 join() 方法实现基于索引的连接。
  3. 数据拼接:使用 concat() 方法实现沿行或列的拼接。
  4. 数据追加:使用 append() 方法实现行方向的追加。

如果你有任何问题或需要进一步的帮助,欢迎在评论区留言!在这里插入图片描述

标签:df,连接,df1,DataFrame,ID,3.4,pd,数据,Pandas
From: https://blog.csdn.net/m0_58149406/article/details/145120678

相关文章

  • 基于PHP+Mysql 论坛信息系统(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......
  • 基于PHP+Mysql人员信息管理(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......
  • 基于PHP+Mysql购物管理系统(源码+LW+部署讲解+数据库+ppt)
    !!!!!!!!!选题不知道怎么选不清楚自己适合做哪块内容都可以免费来问我避免后期給自己答辩找麻烦增加难度(部分学校只有一次答辩机会没弄好就延迟毕业了)会持续一直更新下去有问必答一键收藏关注不迷路源码获取:https://pan.baidu.com/s/1aRpOv3f2sdtVYOogQjb8jg?pwd=jf1d提取码:......
  • windows环境部署influx2.7 (时序数据库)
    官方文档:https://docs.influxdata.com/influxdb/v2/ 1.下载需要下载两样东西:influxd.exe和influx.exeinfluxd:influx数据库的服务端。下载地址:https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.5-windows.zipinflux:连接influx数据库用的cli工具。下载地址:https:/......
  • 频率温度信号多通道数据采集仪:边坡、隧道、桥梁、铁路监测的实时在线解决方案
    频率温度信号多通道数据采集仪:边坡、隧道、桥梁、铁路监测的实时在线解决方案VTN416是一款专为边坡监测、隧道监测、桥梁监测、铁路监测等领域设计的多通道振弦、温度、模拟传感信号系列数据采集仪。它能够实时在线采集32通道的振弦频率、热敏电阻或DS18B20温度传感器以及模拟量......
  • Oracle创建dblink(实现跨数据库查询)纯干货
    介绍     创建dblink实现跨库查询,创建本地数据库对远端数据库的dblink后,就可以像操作本地数据库一样操作远端数据库,这是Oracle给我们提供一个功能,让我们的跨库查询变得非常简单便捷。使用1.查看用户是否有创建dblink的权限(一般管理员用户SYS都有权限)select*fro......
  • 云服务器上的数据库无法连接,如何排查和解决?
    在使用云服务器时,如果遇到数据库无法连接的问题,可能是由多种原因引起的。为了帮助您更好地排查和解决问题,建议按照以下步骤进行检查:确认数据库服务是否启动:首先,确保数据库服务(如MySQL、MariaDB等)已经正常启动。可以通过命令行工具(如systemctlstatusmysql或servicemysqlst......
  • MySQL(高级特性篇) 07 章——InnoDB数据存储结构
    一、数据库的存储结构:页索引结构给我们提供了高效的索引方式,不过索引信息以及数据记录都是保存在文件上的,确切地说是存储在页结构中。另一方面,索引是在存储引擎中实现的,MySQL服务器上的存储引擎负责对表中数据的读取和写入工作。不同存储引擎中存放的格式一般是不同的,甚至有的......
  • 如何解决云服务器数据盘和系统扩容后宝塔面板及网站无法访问的问题?
    当您在进行云服务器的数据盘和系统扩容操作后,如果遇到宝塔面板及网站无法访问的情况,通常可能是由于以下几个原因导致的。以下是一些详细的排查步骤和解决方案,帮助您快速恢复服务器的正常运行。检查80端口是否监听:扩容后,服务器的网络配置可能会发生变化,导致Web服务(如Apache或Ng......
  • Visual NAND Reconstructor 9.0, 新增 pSLC 闪存块数据恢复方案
    一、什么是pSLCpSLC(Pseudo-SingleLevelCell)即伪SLC,是将多层单元(MLC)或三层单元(TLC)闪存的一部分,通过固件管理,模拟成单层单元(SLC)闪存来使用的区域。它并非闪存芯片本身的物理差异,而是通过软件控制实现的。简单来说,就是把一部分MLC或TLC闪存暂时当作SLC闪存来用,从而提......