pandas append 使用详解

pandas append 使用详解

参考:pandas append

在数据分析和数据处理中,经常需要将多个数据集合并为一个大的数据集。Pandas 提供了多种方式来合并数据,其中 append 方法是一个非常直观和常用的方法来合并两个DataFrame。本文将详细介绍 append 方法的使用,包括其基本用法、参数详解以及与其他合并方法的比较。

1. 基本用法

append 方法可以将一个DataFrame添加到另一个DataFrame的末尾。这个方法默认不会直接修改原有的DataFrame,而是返回一个新的DataFrame。

示例代码 1:基本的append操作

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

result = df1._append(df2)
print(result)

Output:

pandas append 使用详解

2. 忽略索引

在使用 append 方法时,可以选择是否保留原DataFrame的索引。如果不希望保留原索引,可以设置 ignore_index=True

示例代码 2:使用ignore_index参数

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2', 'A3'],
    'B': ['B0', 'B1', 'B2', 'B3'],
    'C': ['C0', 'C1', 'C2', 'C3'],
    'D': ['D0', 'D1', 'D2', 'D3']
}, index=[0, 1, 2, 3])

df2 = pd.DataFrame({
    'A': ['A4', 'A5', 'A6', 'A7'],
    'B': ['B4', 'B5', 'B6', 'B7'],
    'C': ['C4', 'C5', 'C6', 'C7'],
    'D': ['D4', 'D5', 'D6', 'D7']
}, index=[4, 5, 6, 7])

result = df1._append(df2, ignore_index=True)
print(result)

Output:

pandas append 使用详解

3. 添加单行数据

append 方法也可以用来添加单行数据。可以通过传递一个字典或者Series对象来实现。

示例代码 3:添加单行数据

import pandas as pd

df = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2'],
    'C': ['C0', 'C1', 'C2']
}, index=[0, 1, 2])

new_row = {'A': 'A3', 'B': 'B3', 'C': 'C3'}
result = df._append(new_row, ignore_index=True)
print(result)

Output:

pandas append 使用详解

4. 使用多个append操作

可以连续使用多个 append 操作来合并多个DataFrame。每次 append 都会返回一个新的DataFrame,因此可以连续调用。

示例代码 4:连续使用append

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2'],
    'C': ['C0', 'C1', 'C2']
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5'],
    'C': ['C3', 'C4', 'C5']
}, index=[3, 4, 5])

df3 = pd.DataFrame({
    'A': ['A6', 'A7', 'A8'],
    'B': ['B6', 'B7', 'B8'],
    'C': ['C6', 'C7', 'C8']
}, index=[6, 7, 8])

result = df1._append(df2)._append(df3)
print(result)

5. 合并具有不同列的DataFrame

当合并的DataFrame具有不同的列时,append 方法会自动对齐列,并在缺失的位置填充NaN。

示例代码 5:合并具有不同列的DataFrame

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    'B': ['B3', 'B4'],
    'C': ['C3', 'C4']
}, index=[3, 4])

result = df1._append(df2)
print(result)

Output:

pandas append 使用详解

6. 使用sort参数

从Pandas 0.23版本开始,append 方法添加了 sort 参数。当合并的DataFrame列不完全相同时,可以通过设置 sort=Truesort=False 来控制合并后的列的排序。

示例代码 6:使用sort参数

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2'],
    'D': ['D0', 'D1', 'D2']
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5'],
    'C': ['C3', 'C4', 'C5']
}, index=[3, 4, 5])

result = df1._append(df2, sort=False)
print(result)

Output:

pandas append 使用详解

7. 性能考虑

虽然 append 方法非常方便,但在处理大规模数据或者在循环中多次使用 append 时,可能会导致性能问题。这是因为每次使用 append 都会创建一个新的DataFrame,这会消耗额外的内存和CPU时间。在这种情况下,建议使用更高效的方法,如 pandas.concat 或直接使用DataFrame的列表构造函数。

示例代码 7:使用pandas.concat代替append

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2'],
    'C': ['C0', 'C1', 'C2']
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5'],
    'C': ['C3', 'C4', 'C5']
}, index=[3, 4, 5])

result = pd.concat([df1, df2])
print(result)

Output:

pandas append 使用详解

使用 pandas.concat 可以有效地处理大量数据的合并,特别是在需要合并多个DataFrame时,它比 append 方法更加高效。

8. append与concat的选择

虽然 appendconcat 都可以用来合并数据,但它们在使用上有所不同。append 是一个便捷的方法,适用于快速添加少量数据。而 concat 提供了更多的灵活性,可以合并多个DataFrame,并且可以在不同的轴向上进行合并。

示例代码 8:比较append和concat

import pandas as pd

# 使用append
df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2'],
    'C': ['C0', 'C1', 'C2']
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    'A': ['A3', 'A4', 'A5'],
    'B': ['B3', 'B4', 'B5'],
    'C': ['C3', 'C4', 'C5']
}, index=[3, 4, 5])

result_append = df1._append(df2)

# 使用concat
result_concat = pd.concat([df1, df2])

print("Append result:")
print(result_append)
print("\nConcat result:")
print(result_concat)

Output:

pandas append 使用详解

9. 处理具有不同索引的DataFrame

当合并具有不同索引的DataFrame时,appendconcat 都可以处理索引的对齐问题,但需要注意索引的重复问题。

示例代码 9:处理具有不同索引的DataFrame

import pandas as pd

df1 = pd.DataFrame({
    'A': ['A0', 'A1', 'A2'],
    'B': ['B0', 'B1', 'B2']
}, index=[0, 1, 2])

df2 = pd.DataFrame({
    'A': ['A3', 'A4'],
    'B': ['B3', 'B4']
}, index=[2, 3])

result = df1._append(df2)
print(result)

Output:

pandas append 使用详解

在这个例子中,df1df2 具有重叠的索引。使用 append 方法时,默认会保留所有索引,即使它们重复。

10. 结论

在Pandas中,append 方法提供了一种快速而简便的方式来合并两个DataFrame。然而,当处理大量数据或需要更高效的数据合并操作时,建议使用 pandas.concat 方法,因为它提供了更高的灵活性和效率。在实际应用中,选择合适的方法取决于具体的数据结构和需求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程