Pandas DataFrame进行数据拼接方法详解

 更新时间:2025年11月05日 15:24:41   作者:Humbunklung  
这篇文章主要为大家详细介绍了Pandas DataFrame进行数据拼接多种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

在Pandas中拼接DataFrame是数据整合的核心操作,以下是一些拼接方法及代码示例

1.concat():沿轴拼接多个DataFrame

适用于结构相似的数据集(相同列或相同索引),支持纵向(行)或横向(列)拼接。

参数关键点

  • axis=0(默认):纵向拼接(增加行);axis=1:横向拼接(增加列)。
  • join='outer':保留所有行列(缺值填NaN);join='inner':仅保留共有行列。
  • ignore_index=True:重置索引,避免重复。
  • keys:添加分层索引,标记来源。

代码示例

import pandas as pd

# 纵向拼接(行追加)
df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']})
df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']})
result_vertical = pd.concat([df1, df2], ignore_index=True)

结果如下:

AB
0A0B0
1A1B1
2A2B2
3A3B3
# 横向拼接(列合并)
df3 = pd.DataFrame({'C': ['C0', 'C1'], 'D': ['D0', 'D1']}, index=[0,1])
result_horizontal = pd.concat([df1, df3], axis=1)

结果如下:

ABCD
0A0B0C0D0
1A1B1C1D1

2.merge():基于键值合并(类似SQL JOIN)

适用于关联不同结构的数据集,通过共享列(键)连接。

参数关键点

  • how:连接方式(innerleftrightouter)。
  • on:指定连接键列名;left_on/right_on:左右表键名不同时使用。
  • left_index/right_index=True:用索引作为连接键。

代码示例

# 内连接(保留共有键)
left = pd.DataFrame({'key': ['K0', 'K1'], 'A': ['A0', 'A1']})
right = pd.DataFrame({'key': ['K0', 'K2'], 'B': ['B0', 'B2']})
result_inner = pd.merge(left, right, on='key', how='inner')

结果如下:

keyAB
0K0A0B0
# 外连接(保留所有键,缺值填NaN)
result_outer = pd.merge(left, right, on='key', how='outer')

result_outer

结果如下:

keyAB
0K0A0B0
1K1A1NaN
2K2NaNB2

3.join():基于索引快速连接

merge的简化版,默认按索引拼接,适合索引对齐的场景。

参数关键点

  • how:连接方式(默认左连接)。
  • lsuffix/rsuffix:左右表列名冲突时添加后缀。

代码示例

left_df = pd.DataFrame({'value': [1, 2]}, index=['A', 'B'])
right_df = pd.DataFrame({'value': [7, 8]}, index=['A', 'C'])
joined = left_df.join(right_df, how='inner', lsuffix='_left', rsuffix='_right')

joined

结果如下:

value_leftvalue_right
A17

4.combine_first():填充缺失值

用第二个DataFrame的非空值补全第一个DataFrame的NaN,适合数据补全。

代码示例

df1 = pd.DataFrame({'A': [1, None, 3], 'B': [4, 5, None]}, index=['X', 'Y', 'Z'])
df2 = pd.DataFrame({'A': [None, 10, 11], 'B': [7, 8, 9]}, index=['Y', 'Z', 'W'])
filled = df1.combine_first(df2)

filled

结果如下:

AB
W11.09.0
X1.04.0
YNaN5.0
Z3.08.0

性能与场景对比

方法适用场景性能优势
concat()同构数据批量拼接(行/列扩展)⭐⭐⭐⭐(高效批处理)
merge()异构数据关联(类似SQL JOIN)⭐⭐⭐(灵活但稍慢)
join()索引对齐的快速合并⭐⭐⭐⭐(索引优化)
combine_first()缺失值填充(非拼接主导)⭐⭐

高效建议

  • 批量纵向拼接优先用concat(ignore_index=True)
  • 关联查询用merge并明确指定on键;
  • 避免已弃用的append(),用concat替代。

通过以上方法,可灵活应对DataFrame拼接需求,平衡效率与功能。

到此这篇关于Pandas DataFrame进行数据拼接方法详解的文章就介绍到这了,更多相关Pandas DataFrame数据拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用PyWeChatSpy自动回复微信拍一拍功能的实现代码

    使用PyWeChatSpy自动回复微信拍一拍功能的实现代码

    这篇文章主要介绍了用PyWeChatSpy自动回复微信拍一拍功能,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Python解压zip文件名乱码问题的具体分析和解决方案

    Python解压zip文件名乱码问题的具体分析和解决方案

    使用Python处理含有中文文件名的压缩文件时,这些中文文件名会出现乱码,今天我们就来看一下如何来解决这个乱码的问题,以下是具体分析和解决方案,需要的朋友可以参考下
    2025-09-09
  • Pandas中resample方法详解

    Pandas中resample方法详解

    这篇文章主要介绍了Pandas中resample方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 深入理解Python中各种方法的运作原理

    深入理解Python中各种方法的运作原理

    这篇文章主要介绍了深入理解Python中各种方法的运作原理,包括抽象方法和静态方法和类方法等之间异同的比较,需要的朋友可以参考下
    2015-06-06
  • Python3中的真除和Floor除法用法分析

    Python3中的真除和Floor除法用法分析

    这篇文章主要介绍了Python3中的真除和Floor除法用法,结合实例形式分析了真除与Floor除法的区别与使用技巧,需要的朋友可以参考下
    2016-03-03
  • pandas 数据归一化以及行删除例程的方法

    pandas 数据归一化以及行删除例程的方法

    今天小编就为大家分享一篇pandas 数据归一化以及行删除例程的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python中类创建和实例化的过程详解

    Python中类创建和实例化的过程详解

    这篇文章主要介绍了Python中类创建和实例化过程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-06-06
  • 使用Python脚本来获取Cisco设备信息的示例

    使用Python脚本来获取Cisco设备信息的示例

    这篇文章主要介绍了编写Python脚本来获取Python脚本来获取Cisco设备信息的教程,文中的示例是获取一台思科交换机的脚本,需要的朋友可以参考下
    2015-05-05
  • pytorch实现ResNet结构的实例代码

    pytorch实现ResNet结构的实例代码

    ResNet网络可以达到很深的层数的原因就是不断的堆叠残差结构而来的,接下来通过本文给大家介绍pytorch实现ResNet结构的示例代码,喜欢的朋友跟随小编一起看看吧
    2021-05-05
  • Python编程使用*解包和itertools.product()求笛卡尔积的方法

    Python编程使用*解包和itertools.product()求笛卡尔积的方法

    这篇文章主要介绍了Python编程使用*解包和itertools.product()求笛卡尔积的方法,涉及Python列表转换及itertools.product()求笛卡尔积相关操作技巧,需要的朋友可以参考下
    2017-12-12

最新评论