- Python Pandas 教程
- Python Pandas - 首页
- Python Pandas - 简介
- Python Pandas - 环境搭建
- Python Pandas - 基础知识
- Python Pandas - 数据结构简介
- Python Pandas - 索引对象
- Python Pandas - 面板 (Panel)
- Python Pandas - 基本功能
- Python Pandas - 索引和数据选择
- Python Pandas - Series
- Python Pandas - Series
- Python Pandas - Series 对象切片
- Python Pandas - Series 对象的属性
- Python Pandas - Series 对象的算术运算
- Python Pandas - Series 对象转换为其他对象
- Python Pandas - DataFrame
- Python Pandas - DataFrame
- Python Pandas - 访问 DataFrame
- Python Pandas - DataFrame 对象切片
- Python Pandas - 修改 DataFrame
- Python Pandas - 从 DataFrame 中删除行
- Python Pandas - DataFrame 的算术运算
- Python Pandas - I/O 工具
- Python Pandas - I/O 工具
- Python Pandas - 使用 CSV 格式
- Python Pandas - 读取和写入 JSON 文件
- Python Pandas - 从 Excel 文件读取数据
- Python Pandas - 将数据写入 Excel 文件
- Python Pandas - 使用 HTML 数据
- Python Pandas - 剪贴板
- Python Pandas - 使用 HDF5 格式
- Python Pandas - 与 SQL 的比较
- Python Pandas - 数据处理
- Python Pandas - 排序
- Python Pandas - 重新索引
- Python Pandas - 迭代
- Python Pandas - 数据连接
- Python Pandas - 统计函数
- Python Pandas - 描述性统计
- Python Pandas - 处理文本数据
- Python Pandas - 函数应用
- Python Pandas - 选项和自定义
- Python Pandas - 窗口函数
- Python Pandas - 聚合
- Python Pandas - 合并/连接
- Python Pandas - 多层索引 (MultiIndex)
- Python Pandas - 多层索引基础
- Python Pandas - 使用多层索引进行索引
- Python Pandas - 使用多层索引进行高级重新索引
- Python Pandas - 重命名多层索引标签
- Python Pandas - 对多层索引进行排序
- Python Pandas - 二元运算
- Python Pandas - 二元比较运算
- Python Pandas - 布尔索引
- Python Pandas - 布尔掩码
- Python Pandas - 数据重塑和透视
- Python Pandas - 透视表
- Python Pandas - 堆叠和取消堆叠
- Python Pandas - 熔化 (Melting)
- Python Pandas - 计算虚拟变量
- Python Pandas - 分类数据
- Python Pandas - 分类数据
- Python Pandas - 分类数据的排序和排列
- Python Pandas - 分类数据的比较
- Python Pandas - 处理缺失数据
- Python Pandas - 缺失数据
- Python Pandas - 填充缺失数据
- Python Pandas - 缺失值的插值
- Python Pandas - 删除缺失数据
- Python Pandas - 包含缺失数据的计算
- Python Pandas - 处理重复数据
- Python Pandas - 重复数据
- Python Pandas - 计数和检索唯一元素
- Python Pandas - 重复标签
- Python Pandas - 分组和聚合
- Python Pandas - GroupBy
- Python Pandas - 时间序列数据
- Python Pandas - 日期功能
- Python Pandas - 时间增量 (Timedelta)
- Python Pandas - 稀疏数据结构
- Python Pandas - 稀疏数据
- Python Pandas - 数据可视化
- Python Pandas - 数据可视化
- Python Pandas - 其他概念
- Python Pandas - 警告和陷阱
- Python Pandas - 有用资源
- Python Pandas - 快速指南
- Python Pandas - 有用资源
- Python Pandas - 讨论
Python Pandas - 数据连接
Pandas 中的数据连接是指沿着指定轴连接两个或多个 Pandas 对象(如 DataFrame 或 Series)的过程。当需要合并来自不同来源或数据集的数据时,此操作非常有用。
此操作的主要工具是 **pd.concat()** 函数,它可用于 **Series**、**DataFrame** 对象,无论您是组合行还是列。Pandas 中的数据连接涉及按行或按列组合多个 DataFrame 或 Series 对象。
在本教程中,我们将探讨如何使用 **pd.concat()** 函数连接 Pandas 对象。我们将讨论不同的场景,包括沿行连接、使用键区分连接的 DataFrame、在连接期间忽略索引以及沿列连接。
理解 pd.concat() 函数
**pandas.concat()** 函数是 Pandas 中用于连接的主要方法。它允许您沿着特定轴连接 pandas 对象,并提供各种用于处理索引的选项。
**pd.concat()** 函数的语法如下:
pandas.concat(objs, *, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=None)
其中:
**objs:** 这是 Series、DataFrame 或 Panel 对象的序列或映射。
**axis:** {0, 1, ...}, 默认值为 0。这是要沿其连接的轴。
**join:** {"inner", "outer"}, 默认值为 "outer"。如何处理其他轴上的索引。 "outer" 表示并集,"inner" 表示交集。
**ignore_index:** 布尔值,默认为 False。如果为 True,则不使用连接轴上的索引值。结果轴将标记为 0, ..., n - 1。
**keys:** 用于沿连接轴创建分层索引。
**levels:** 结果中多层索引要使用的特定层级。
**names:** 结果分层索引中层级的名称。
**verify_integrity:** 如果为 True,则检查新轴中是否存在重复项,如果发现重复项则引发错误。
**sort:** 当组合列未对齐的 DataFrame 时,此参数确保列已排序。
**copy:** 默认值为 None。如果为 False,则不必要地复制数据。
**concat()** 函数完成了沿轴执行连接操作的所有繁重工作。让我们创建不同的对象并进行连接。
示例:连接 DataFrame
在此示例中,两个 DataFrame 沿行连接,生成的 DataFrame 具有重复的索引。
import pandas as pd # Creating two DataFrames one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) # Concatenating DataFrames result = pd.concat([one, two]) print(result)
其**输出**如下:
Name subject_id Marks_scored 1 Alex sub1 98 2 Amy sub2 90 3 Allen sub4 87 4 Alice sub6 69 5 Ayoung sub5 78 1 Billy sub2 89 2 Brian sub4 80 3 Bran sub3 79 4 Bryce sub6 97 5 Betty sub5 88
示例:使用键进行连接
如果要区分连接的 DataFrame,可以使用 keys 参数将特定键与 DataFrame 的每个部分关联。
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y']))
其**输出**如下:
Name subject_id Marks_scored x 1 Alex sub1 98 2 Amy sub2 90 3 Allen sub4 87 4 Alice sub6 69 5 Ayoung sub5 78 y 1 Billy sub2 89 2 Brian sub4 80 3 Bran sub3 79 4 Bryce sub6 97 5 Betty sub5 88
此处,x 和 y 键创建了一个分层索引,可以轻松识别每行来自哪个原始 DataFrame。
示例:在连接期间忽略索引
如果结果对象必须遵循其自身的索引,请将 **ignore_index** 设置为 **True**。
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],keys=['x','y'],ignore_index=True))
其**输出**如下:
Name subject_id Marks_scored 0 Alex sub1 98 1 Amy sub2 90 2 Allen sub4 87 3 Alice sub6 69 4 Ayoung sub5 78 5 Billy sub2 89 6 Brian sub4 80 7 Bran sub3 79 8 Bryce sub6 97 9 Betty sub5 88
注意,索引完全改变了,键也被覆盖了。
示例:沿列连接
您可以通过将 **axis** 参数设置为 1 来沿列连接,而不是沿行连接。
import pandas as pd one = pd.DataFrame({ 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5'], 'Marks_scored':[98,90,87,69,78]}, index=[1,2,3,4,5]) two = pd.DataFrame({ 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5'], 'Marks_scored':[89,80,79,97,88]}, index=[1,2,3,4,5]) print(pd.concat([one,two],axis=1))
其**输出**如下:
Name subject_id Marks_scored Name subject_id Marks_scored 1 Alex sub1 98 Billy sub2 89 2 Amy sub2 90 Brian sub4 80 3 Allen sub4 87 Bran sub3 79 4 Alice sub6 69 Bryce sub6 97 5 Ayoung sub5 78 Betty sub5 88