Python中按列表索引拼接DataFrame列表的方法求助
解决方案
你可以通过转置嵌套列表再逐组拼接的方式实现需求,具体操作如下:
- 利用
zip(*df_list)将原3×5的嵌套列表转置为5×3的结构,让每一组对应需要拼接的同索引DataFrame集合 - 对转置后的每一组数据使用
pd.concat()进行纵向拼接 - 将拼接结果转为列表即可得到目标结构
代码示例
import pandas as pd # 模拟原3×5嵌套DataFrame列表 df_list = [ [pd.DataFrame({'col': [1,2]}), pd.DataFrame({'col': [3,4]}), pd.DataFrame({'col': [5,6]}), pd.DataFrame({'col': [7,8]}), pd.DataFrame({'col': [9,10]})], [pd.DataFrame({'col': [11,12]}), pd.DataFrame({'col': [13,14]}), pd.DataFrame({'col': [15,16]}), pd.DataFrame({'col': [17,18]}), pd.DataFrame({'col': [19,20]})], [pd.DataFrame({'col': [21,22]}), pd.DataFrame({'col': [23,24]}), pd.DataFrame({'col': [25,26]}), pd.DataFrame({'col': [27,28]}), pd.DataFrame({'col': [29,30]})] ] # 执行拼接操作 dfs = [pd.concat(group) for group in zip(*df_list)] # 验证结果(可选) print(dfs[0]) # 输出df1、df11、df21的拼接结果
关键说明
zip(*df_list)是核心操作:它会将原列表的每一列元素打包成元组,比如第一个元组是(df1, df11, df21),第二个是(df2, df12, df22),以此完成行列转置- 列表推导式遍历每个元组,通过
pd.concat()完成纵向拼接,最终生成目标列表dfs
内容的提问来源于stack exchange,提问作者dylanm
相关产品推荐
相关产品推荐

