pandas数据合并之pd.concat()用法详解

  • Post category:Python

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()方法可以帮助我们很好地处理数据框。