基于Pandas实现竖向拼接多个DataFrame对象的几种常用方法
作者:袁袁袁袁满
在pandas模块中,通常我们都需要对类型为DataFrame的数据进行操作,其中最为常见的操作便是拼接了,在Python中,可以使用pandas库的concat()函数或append()方法来竖向(按行)拼接多个DataFrame对象,本文介绍了几种常用的方法,需要的朋友可以参考下
在Python中,可以使用pandas库的concat()
函数或append()
方法来竖向(按行)拼接多个DataFrame对象。以下是几种常用的方法:
方法1:使用pd.concat()
import pandas as pd # 创建示例DataFrame df1 = pd.DataFrame({'A': ['A0', 'A1'], 'B': ['B0', 'B1']}) df2 = pd.DataFrame({'A': ['A2', 'A3'], 'B': ['B2', 'B3']}) df3 = pd.DataFrame({'A': ['A4', 'A5'], 'B': ['B4', 'B5']}) # 竖向拼接 result = pd.concat([df1, df2, df3], axis=0) # axis=0是默认值,可以省略 print(result)
输出:
A B 0 A0 B0 1 A1 B1 0 A2 B2 1 A3 B3 0 A4 B4 1 A5 B5
方法2:使用append()方法(已弃用,推荐使用concat)
# 注意:append()在pandas 2.0版本中已被弃用 result = df1.append([df2, df3], ignore_index=True) print(result)
方法3:使用concat()并重置索引
result = pd.concat([df1, df2, df3], ignore_index=True) print(result)
输出:
A B 0 A0 B0 1 A1 B1 2 A2 B2 3 A3 B3 4 A4 B4 5 A5 B5
高级用法
处理不同列的DataFrame:
df4 = pd.DataFrame({'A': ['A6', 'A7'], 'C': ['C6', 'C7']}) result = pd.concat([df1, df4], sort=False) print(result)
添加区分键:
result = pd.concat([df1, df2, df3], keys=['df1', 'df2', 'df3']) print(result)
使用join参数处理不同列:
# 内连接,只保留共有的列 result = pd.concat([df1, df4], join='inner')
注意事项
- 默认情况下,
concat()
会保留原始索引,可以使用ignore_index=True
重新生成连续索引 - 如果DataFrame的列不完全相同,可以使用
sort=False
避免列自动排序 - 对于大量DataFrame拼接,考虑使用生成器表达式而不是列表推导式以节省内存
性能考虑
对于大量DataFrame的拼接,可以先将它们放入列表中,然后一次性拼接:
dfs = [df1, df2, df3] # 可以是任意数量的DataFrame result = pd.concat(dfs, ignore_index=True)
这种方法比逐个追加更高效。
到此这篇关于基于Pandas实现竖向拼接多个DataFrame对象的几种常用方法的文章就介绍到这了,更多相关Pandas竖向拼接DataFrame对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!