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:
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:
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:
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:
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:
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:
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 可能更加高效。