如何高效按行拼接嵌套列表中的DataFrame?
高效实现嵌套DataFrame列表的按列纵向拼接
你可以利用Python内置的zip(*ls)操作转置嵌套列表,再结合列表推导式完成拼接,比两层循环更简洁高效:
实现代码
import pandas as pd # 假设已定义df1至df9 ls = [[df1, df2, df3], [df4, df5, df6], [df7, df8, df9]] # 核心实现:转置后逐组拼接 result = [pd.concat(group, axis=0) for group in zip(*ls)]
原理说明
zip(*ls)会将原二维列表转置,把原来按行排列的DataFrame转为按列分组:原列表的第1列(df1、df4、df7)会被打包成一个元组,第2列(df2、df5、df8)同理,以此类推。- 列表推导式遍历每个分组元组,用
pd.concat(..., axis=0)完成纵向拼接,整个过程依赖Python内置的高效迭代器,比手动两层循环性能更好。
可选的numpy方式(非必要)
如果想用numpy辅助转置,也可以实现,但代码稍显冗余,性能和zip方式差异不大:
import numpy as np import pandas as pd arr = np.array(ls) result = [pd.concat(col, axis=0) for col in arr.T]
内容的提问来源于stack exchange,提问作者redrobinyum
相关产品推荐
相关产品推荐

