当前位置: 代码网 > it编程>编程语言>其他编程 > Pandas DataFrame进行数据拼接方法详解

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

2025年11月05日 其他编程 我要评论
在pandas中拼接dataframe是数据整合的核心操作,以下是一些拼接方法及代码示例1.concat():沿轴拼接多个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数据拼接内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com