Pandas中append函数使用教程 - 数据合并技巧详解
- Python
- 2025-07-31
- 523
Pandas中append函数使用教程
在数据分析中,经常需要合并多个数据集。pandas库中的append()函数是DataFrame对象的一个方法,用于在现有DataFrame的末尾添加另一个DataFrame或类似结构的数据。本教程将详细讲解append函数的使用方法、参数含义及实际应用场景。
1. append函数基本语法
append函数的基本语法如下:
DataFrame.append(
other,
ignore_index=False,
verify_integrity=False,
sort=None
)
其中:
- other:要追加的DataFrame或类似结构(如Series、dict等)
- ignore_index:是否忽略原始索引,默认为False
- verify_integrity:检查新索引是否重复,默认为False
- sort:是否对列进行排序,默认为None(自动判断)
2. 参数详解
ignore_index参数
当设置为True时,新DataFrame将重置索引,生成0到n-1的新索引。这在原始索引无意义时非常有用。
verify_integrity参数
设置为True时,如果新索引与现有索引有重复,会抛出ValueError异常。默认为False,允许索引重复。
sort参数
控制是否对列名进行排序。在列顺序不一致时,设置为True可以确保列顺序一致。
3. 基础使用示例
下面是一个简单的append使用示例:
import pandas as pd
# 创建第一个DataFrame
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
})
# 创建第二个DataFrame
df2 = pd.DataFrame({
'A': ['A3', 'A4'],
'B': ['B3', 'B4']
})
# 使用append合并
result = df1.append(df2)
print(result)
输出结果:
A B
0 A0 B0
1 A1 B1
2 A2 B2
0 A3 B3
1 A4 B4
注意索引保留了原始值,导致索引重复。可以使用ignore_index=True解决:
# 使用ignore_index重置索引
result = df1.append(df2, ignore_index=True)
print(result)
输出结果:
A B
0 A0 B0
1 A1 B1
2 A2 B2
3 A3 B3
4 A4 B4
4. 处理列不匹配情况
当两个DataFrame的列不完全相同时,pandas会自动处理:
# 创建第一个DataFrame
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
})
# 创建第二个DataFrame(包含新列C)
df2 = pd.DataFrame({
'A': ['A3', 'A4'],
'C': ['C3', 'C4'] # 注意这里是C列,不是B列
})
# 使用append合并
result = df1.append(df2, ignore_index=True)
print(result)
输出结果:
A B C
0 A0 B0 NaN
1 A1 B1 NaN
2 A2 B2 NaN
3 A3 NaN C3
4 A4 NaN C4
注意事项:
- 原始DataFrame中不存在的列,在追加后会显示为NaN
- 追加DataFrame中不存在的列,在结果中也会显示为NaN
- 使用
sort=True
可以确保列按字母顺序排序
5. 追加多个DataFrame
可以一次性追加多个DataFrame:
# 创建三个DataFrame
df1 = pd.DataFrame({'A': ['A0'], 'B': ['B0']})
df2 = pd.DataFrame({'A': ['A1'], 'B': ['B1']})
df3 = pd.DataFrame({'A': ['A2'], 'B': ['B2']})
# 追加多个DataFrame
result = df1.append([df2, df3], ignore_index=True)
print(result)
输出结果:
A B
0 A0 B0
1 A1 B1
2 A2 B2
6. 性能优化建议
当需要合并大量DataFrame时,append可能不是最高效的方法:
不推荐做法(效率低):
result = pd.DataFrame()
for i in range(1000):
df = pd.DataFrame(...) # 创建新DataFrame
result = result.append(df) # 反复追加
推荐做法(高效):
# 创建DataFrame列表
dfs = []
for i in range(1000):
df = pd.DataFrame(...) # 创建新DataFrame
dfs.append(df) # 添加到列表
# 一次性合并
result = pd.concat(dfs, ignore_index=True)
使用pd.concat()
代替循环append可以显著提高性能,尤其是在处理大型数据集时。
7. 常见问题解答
Q1: append会修改原始DataFrame吗?
不会。append方法不会修改原始DataFrame,而是返回一个新的DataFrame。如果需要修改原始对象,需要将结果赋值回原变量:
df1 = df1.append(df2) # 正确:将结果赋值回df1
Q2: 可以追加Series吗?
可以。追加Series时,它会转换为单行DataFrame:
s = pd.Series(['A3', 'B3'], index=['A', 'B'])
result = df1.append(s, ignore_index=True)
Q3: append和concat有什么区别?
- append:专门用于在末尾添加行(垂直堆叠)
- concat:功能更强大,可以沿任意轴(行或列)合并,支持更复杂的合并操作
总结
pandas的append函数是合并DataFrame的便捷工具,特别适合小规模数据或简单行追加场景。关键点总结:
- 使用
ignore_index=True
重置索引 - 处理列不匹配时自动填充NaN
- 避免循环中反复追加,使用concat替代
- append不修改原对象,需赋值回变量
对于更复杂的数据合并需求(如多DataFrame合并、沿列合并等),建议使用pd.concat()
或pd.merge()
函数。
本文由DuZhen于2025-07-31发表在吾爱品聚,如有疑问,请联系我们。
本文链接:https://www.521pj.cn/20256949.html
发表评论