使用 pd.concat合并 Pandas 数据框
在数据处理过程中,我们经常会遇到需要合并两个或多个数据框的情况。Pandas 提供了一个非常方便的函数 pd.concat
,可以帮助我们实现数据的合并。本文将详细介绍 pd.concat
的用法,包括合并方式、参数设置以及示例代码。
一、pd.concat
的基本用法
1. 合并两个数据框
首先让我们看一个简单的示例,如何合并两个数据框:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [5, 6], 'B': [7, 8]})
result = pd.concat([df1, df2])
print(result)
运行以上代码,将得到合并后的结果:
A B
0 1 3
1 2 4
0 5 7
1 6 8
可以看到,两个数据框按照纵向叠加的方式进行了合并,行索引自动调整。
2. 指定合并轴
除了默认的纵向叠加方式,我们还可以通过指定 axis
参数来改变合并的轴,将两个数据框按照横向拼接的方式合并:
result = pd.concat([df1, df2], axis=1)
print(result)
运行以上代码,将得到横向拼接后的结果:
A B A B
0 1 3 5 7
1 2 4 6 8
3. 忽略索引
有时候我们并不希望保留原来的行索引,可以通过 ignore_index
参数将合并后的数据框重新生成一个新的索引:
result = pd.concat([df1, df2], ignore_index=True)
print(result)
运行以上代码,将得到不保留原索引的合并结果:
A B
0 1 3
1 2 4
2 5 7
3 6 8
二、pd.concat
的高级用法
1. 沿着列合并
除了将数据框按行或列合并外,我们还可以根据列名来合并数据:
df3 = pd.DataFrame({'C': [9, 10], 'D': [11, 12]})
result = pd.concat([df1, df3], axis=1)
print(result)
运行以上代码,将得到按列名合并后的结果:
A B C D
0 1 3 9 11
1 2 4 10 12
2. 合并时填充缺失值
当两个数据框的列名不完全相同时,合并会产生缺失值,我们可以通过设置 join
参数来指定合并时的方式:
join='inner'
:只保留两个数据框列名的交集;join='outer'
:保留两个数据框列名的并集,并将缺失值填充为 NaN。
df4 = pd.DataFrame({'B': [13, 14], 'C': [15, 16]})
result = pd.concat([df1, df4], join='inner', ignore_index=True)
print(result)
运行以上代码,将得到保留列名交集且填充缺失值的合并结果:
B
0 3
1 4
2 13
3 14
3. 设置 keys 参数
在合并多个数据框时,我们可以通过设置 keys
参数在合并后的数据框中创建一个多级索引:
result = pd.concat([df1, df2], keys=['df1', 'df2'])
print(result)
运行以上代码,将得到带有多级索引的合并结果:
A B
df1 0 1 3
1 2 4
df2 0 5 7
1 6 8
三、总结
通过本文的介绍,我们了解了 pd.concat
函数的基本用法和高级用法,包括合并方式、参数设置以及示例代码。在实际数据处理中,pd.concat
是一个非常方便的工具,可以帮助我们快速合并多个数据框,完成数据的整合和分析工作。