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数据拼接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python的pycurl包用法简介

    Python的pycurl包用法简介

    这篇文章主要介绍了Python的pycurl包用法简介,文中罗列了其下模块中的一些常用方法,需要的朋友可以参考下
    2015-11-11
  • Python pandas进行数据预处理的实现

    Python pandas进行数据预处理的实现

    本案例通过使用pandas库对电子商务客户数据进行数据预处理,包括数据导入、查看、缺失值处理等处理,具有一定的参考价值,感兴趣的可以了解一下
    2025-01-01
  • Python中turtle作图示例

    Python中turtle作图示例

    这篇文章主要介绍了Python中turtle作图示例,分享了几则turtle作图的小实例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python解析json代码实例解析

    Python解析json代码实例解析

    这篇文章主要介绍了Python解析json代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python退出While循环的3种方法举例详解

    Python退出While循环的3种方法举例详解

    在每次循环结束后,我们需要检查循环条件是否满足。如果条件满足,则继续执行循环体内的代码,否则退出循环,这篇文章主要给大家介绍了关于Python退出While循环的3种方法,需要的朋友可以参考下
    2023-10-10
  • python内置函数compile(),complex()的使用

    python内置函数compile(),complex()的使用

    这篇文章主要为大家详细介绍了python内置函数compile(),complex()的使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • python中数组array和列表list的基本用法及区别解析

    python中数组array和列表list的基本用法及区别解析

    大家都知道数组array是同类型数据的有限集合,列表list是一系列按特定顺序排列的元素组成,可以将任何数据放入列表,且其中元素之间没有任何关系,本文介绍python中数组array和列表list的基本用法及区别,感兴趣的朋友一起看看吧
    2022-05-05
  • Selenium 滚动页面至元素可见的方法

    Selenium 滚动页面至元素可见的方法

    这篇文章主要介绍了Selenium 滚动页面至元素可见的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python代码实现为PDF添加页码(附详细教程)

    Python代码实现为PDF添加页码(附详细教程)

    在处理合同、报告、论文、技术文档等 PDF 时,给页面添加页码几乎是必备功能,本文将介绍如何使用 Spire.PDF for Python 这个强大的库,通过简单的代码为 PDF 文件自动添加 中文页码 ,希望对大家有所帮助
    2026-05-05
  • python实现随机森林random forest的原理及方法

    python实现随机森林random forest的原理及方法

    本篇文章主要介绍了python实现随机森林random forest的原理及方法,详细的介绍了随机森林的原理和python实现,非常具有参考价值,有兴趣的可以了解一下
    2017-12-12

最新评论