pandas append 使用详解

pandas append 使用详解

参考:pandas append

在数据处理和分析中,经常需要将多个数据集合并为一个大的数据集。Pandas 提供了多种方式来合并数据,其中 append() 函数是一个非常实用的工具,它可以快速地将一行或多行附加到 DataFrame 上。本文将详细介绍 append() 函数的使用方法,并通过多个示例展示其应用。

1. 基本用法

append() 函数可以将一个列表、Series、DataFrame 或者多个 DataFrame 的列表添加到原始 DataFrame 的末尾。这个函数主要有以下几个参数:

  • other: 要添加的数据,可以是 DataFrame、Series、dict,或者是这些数据的列表。
  • ignore_index: 布尔值,默认为 False。如果为 True,则不使用 index 标签。
  • sort: 布尔值,默认为 False。如果为 True,则按照列名进行排序。

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

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 append 合并 df1 和 df2
result = df1._append(df2, ignore_index=True)
print(result)

Output:

pandas append 使用详解

2. 忽略索引

在默认情况下,append() 保留原始 DataFrame 的索引,即使它们的索引完全相同。这可能会导致索引重复。使用 ignore_index=True 可以让 Pandas 重新为合并后的 DataFrame 生成新的整数索引。

示例代码 2:使用 ignore_index 参数

import pandas as pd

# 创建两个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 append 合并 df1 和 df2,并忽略原有索引
result = df1._append(df2, ignore_index=True)
print(result)

Output:

pandas append 使用详解

3. 添加单行数据

append() 也可以用来添加单行数据。可以通过传递一个 Series 或字典来实现,如果使用字典,需要将 ignore_index=True

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

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 创建一个 Series
new_row = pd.Series([4, 'pandasdataframe.com'], index=['A', 'B'])

# 添加到 DataFrame
result = df._append(new_row, ignore_index=True)
print(result)

Output:

pandas append 使用详解

4. 合并多个 DataFrame

使用 append() 可以一次性合并多个 DataFrame。这可以通过将 DataFrame 的列表传递给 append() 实现。

示例代码 4:合并多个 DataFrame

import pandas as pd

# 创建三个 DataFrame
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df3 = pd.DataFrame({
    'A': [7, 8, 9],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 合并所有 DataFrame
result = df1._append([df2, df3], ignore_index=True)
print(result)

Output:

pandas append 使用详解

5. 处理不匹配的列

当合并的 DataFrame 拥有不完全相同的列时,append() 会自动创建缺失的列,并用 NaN 填充缺失的值。

示例代码 5:处理不匹配的列

import pandas as pd

# 创建两个 DataFrame,列不完全相同
df1 = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})
df2 = pd.DataFrame({
    'A': [4, 5, 6],
    'C': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用 append 合并 df1 和 df2
result = df1._append(df2, ignore_index=True, sort=False)
print(result)

Output:

pandas append 使用详解

6. 使用字典进行行追加

除了直接追加 DataFrame 或 Series,append() 还可以接受字典形式的数据,这在快速添加数据时非常方便。

示例代码 6:使用字典进行行追加

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': ['pandasdataframe.com', 'pandasdataframe.com', 'pandasdataframe.com']
})

# 使用字典追加一行
new_row = {'A': 4, 'B': 'pandasdataframe.com'}
result = df._append(new_row, ignore_index=True)
print(result)

Output:

pandas append 使用详解

7. 性能注意事项

虽然 append() 在使用上非常方便,但在处理大数据集或在循环中频繁使用 append() 时,可能会导致性能问题。每次 append() 操作都会创建新的 DataFrame,如果追加操作很多,这会消耗大量时间和内存。在这种情况下,建议使用更高效的数据结构如列表,将所有数据收集完毕后再转换为 DataFrame。

示例代码 7:性能优化

import pandas as pd

# 创建一个空的 DataFrame
df = pd.DataFrame(columns=['A', 'B'])

# 创建一个列表,用于存储多行数据
rows = []
for i in range(1000):
    rows.append({'A': i, 'B': 'pandasdataframe.com'})

# 一次性追加到 DataFrame
df = pd.DataFrame(rows)
print(df)

8. 结论

Pandas 的 append() 函数提供了一个非常方便的方法来扩展 DataFrame 的数据。通过本文的介绍和示例,您应该能够掌握如何使用这个功能来处理您的数据。记住,在处理大量数据时,考虑到性能问题,使用其他方法如 concat() 或直接构建一个足够大的 DataFrame 可能更加高效。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程