Pandas数据合并之pd.concat()用法详解
在Pandas中,数据合并是常见操作之一。而pd.concat()方法提供了一种简单的合并方式。本文将详细介绍pd.concat()方法的用法。
pd.concat()方法
pd.concat()方法用于按行或列将多个数据框(DataFrame)连接在一起。它可以沿着指定的轴将多个数据框连接到一起,并根据指定的方式解决索引重叠的问题。pd.concat()方法的一般语法如下所示:
pd.concat(objs, axis=0, join='outer', ignore_index=False)
其中各参数的含义如下:
- objs: 要连接的多个数据框,可以使用列表、元组或数据框构成的字典。
- axis:指定要连接的轴,取值为0或1,默认为0。
- join:指定连接方式,取值为’outer’或’inner’,默认为’outer’。当取值为’outer’时,连接结果中将包含所有索引;当取值为’inner’时,连接结果中只包括交集部分的索引。
- ignore_index:当取值为True时,重新生成行索引,从0开始编号;当取值为False时,使用源数据框的行索引。
pd.concat()方法示例
下面通过几个简单的示例来详细说明pd.concat()方法的用法。
1. 按行连接数据框
假设我们有两个数据框df1和df2,它们的列数相同,但行数不同,如下所示:
df1:
name | score | gender | |
---|---|---|---|
0 | Alice | 90 | F |
1 | Bob | 80 | M |
2 | Carol | 70 | F |
df2:
name | score | gender | |
---|---|---|---|
3 | Dave | 60 | M |
4 | Eddie | 50 | M |
现在我们需要将它们按行连接在一起,代码如下:
import pandas as pd
df1 = pd.DataFrame({
'name': ['Alice', 'Bob', 'Carol'],
'score': [90, 80, 70],
'gender': ['F', 'M', 'F']
})
df2 = pd.DataFrame({
'name': ['Dave', 'Eddie'],
'score': [60, 50],
'gender': ['M', 'M']
})
result = pd.concat([df1, df2], axis=0, ignore_index=True)
print(result)
输出结果如下:
name score gender
0 Alice 90 F
1 Bob 80 M
2 Carol 70 F
3 Dave 60 M
4 Eddie 50 M
2. 沿列连接数据框
假设我们有两个数据框df1和df2,它们的行数相同,但列数不同,如下所示:
df1:
name | score | |
---|---|---|
0 | Alice | 90 |
1 | Bob | 80 |
df2:
gender | |
---|---|
0 | F |
1 | M |
现在我们需要将它们按列连接在一起,代码如下:
import pandas as pd
df1 = pd.DataFrame({
'name': ['Alice', 'Bob'],
'score': [90, 80]
})
df2 = pd.DataFrame({
'gender': ['F', 'M']
})
result = pd.concat([df1, df2], axis=1)
print(result)
输出结果如下:
name score gender
0 Alice 90 F
1 Bob 80 M
3. 按索引连接数据框
假设我们有两个数据框df1和df2,它们的行索引重叠,如下所示:
df1:
name | score | |
---|---|---|
0 | Alice | 90 |
1 | Bob | 80 |
df2:
name | score | |
---|---|---|
1 | Carol | 70 |
2 | Dave | 60 |
现在我们需要将它们按索引连接在一起,代码如下:
import pandas as pd
df1 = pd.DataFrame({
'name': ['Alice', 'Bob'],
'score': [90, 80]
})
df2 = pd.DataFrame({
'name': ['Carol', 'Dave'],
'score': [70, 60]
}, index=[1, 2])
result = pd.concat([df1, df2], axis=0, join='inner')
print(result)
输出结果如下:
name score
0 Alice 90
1 Bob 80
1 Carol 70
2 Dave 60
总结
本文详细介绍了pd.concat()方法的用法,以及如何使用它将多个数据框连接在一起。当遇到行数或列数不同、索引重叠等情况时,pd.concat()方法可以帮助我们很好地处理数据框。