python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Pandas DataFrame数据拼接

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

作者:Humbunklung

这篇文章主要为大家详细介绍了Pandas DataFrame进行数据拼接多种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

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

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

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

参数关键点

代码示例

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)

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

参数关键点

代码示例

# 内连接(保留共有键)
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的简化版,默认按索引拼接,适合索引对齐的场景。

参数关键点

代码示例

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()缺失值填充(非拼接主导)⭐⭐

高效建议

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

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

您可能感兴趣的文章:
阅读全文