pandas append vs concat

pandas append vs concat

参考:pandas append vs concat

在数据分析和数据处理中,经常需要将多个数据集合并为一个大的数据集。Pandas 是 Python 中一个强大的数据处理库,它提供了多种数据合并方法,其中最常用的是 append()concat()。本文将详细介绍这两个函数的用法、区别以及何时使用它们。

1. pandas append() 方法

append() 方法主要用于将一行或多行附加到一个 DataFrame 上。这是一个便捷的方法,但不是特别高效,因为它涉及到创建新的 DataFrame。尽管如此,对于较小的数据集或者偶尔的数据附加,使用 append() 是完全可以接受的。

示例代码 1:使用 append() 添加单行

import pandas as pd

# 创建一个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

# 创建一个要添加的新行
new_row = pd.Series(["A2", "B2"], index=df1.columns, name='pandasdataframe.com')

# 使用 append() 添加新行
df1 = df1._append(new_row)
print(df1)

Output:

pandas append vs concat

示例代码 2:使用 append() 合并两个 DataFrame

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
}, index=[2, 3])

# 使用 append() 合并 DataFrame
df1 = df1._append(df2)
print(df1)

Output:

pandas append vs concat

2. pandas concat() 方法

concat() 方法是 pandas 中用于合并数据的更强大的工具。它不仅可以合并行,还可以合并列,支持多个 DataFrame 的合并,以及多种合并方式(如内连接和外连接)。

示例代码 3:简单的纵向合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
})

# 使用 concat() 纵向合并
result = pd.concat([df1, df2])
print(result)

Output:

pandas append vs concat

示例代码 4:横向合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
})

df2 = pd.DataFrame({
    "C": ["C0", "C1"],
    "D": ["D0", "D1"]
})

# 使用 concat() 横向合并
result = pd.concat([df1, df2], axis=1)
print(result)

Output:

pandas append vs concat

示例代码 5:使用不同的索引合并

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1"],
    "B": ["B0", "B1"]
}, index=[0, 1])

df2 = pd.DataFrame({
    "A": ["A2", "A3"],
    "B": ["B2", "B3"]
}, index=[2, 3])

# 使用 concat() 合并并保持索引
result = pd.concat([df1, df2], ignore_index=False)
print(result)

Output:

pandas append vs concat

3. append() vs concat()

虽然 append()concat() 都可以用来合并数据,但它们在使用上有一些重要的区别。append()concat() 的简化版,主要用于简单的行合并,而 concat() 提供了更多的灵活性,可以进行更复杂的合并操作。

示例代码 6:append()concat() 的性能比较

import pandas as pd
import time

# 创建大型 DataFrame
df1 = pd.DataFrame({
    "A": ["A" + str(i) for i in range(10000)],
    "B": ["B" + str(i) for i in range(10000)]
})

df2 = pd.DataFrame({
    "A": ["A" + str(i) for i in range(10000, 20000)],
    "B": ["B" + str(i) for i in range(10000, 20000)]
})

# 测试 append() 的性能
start_time = time.time()
df1._append(df2)
print("append() time:", time.time() - start_time)

# 测试 concat() 的性能
start_time = time.time()
pd.concat([df1, df2])
print("concat() time:", time.time() - start_time)

Output:

pandas append vs concat

示例代码 7:使用 concat() 进行复杂的合并操作

import pandas as pd

# 创建三个 DataFrame
df1 = pd.DataFrame({
    "A": ["A0", "A1", "A2"],
    "B": ["B0", "B1", "B2"]
})

df2 = pd.DataFrame({
    "A": ["A3", "A4", "A5"],
    "B": ["B3", "B4", "B5"]
})

df3 = pd.DataFrame({
    "A": ["A6", "A7", "A8"],
    "B": ["B6", "B7", "B8"]
})

# 使用 concat() 合并三个 DataFrame
result = pd.concat([df1, df2, df3])

4. 结论

在处理大型数据集或需要进行复杂合并操作时,建议使用 concat()。对于简单的行追加操作,可以使用 append(),尤其是在数据集较小的情况下。总的来说,concat() 提供了更高的灵活性和效率,是处理大规模数据合并的首选方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程