You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame列表转换为单个Pandas DataFrame?报错解决

解决方法:Pandas 合并多DataFrame列表报错问题

错误原因:target_stocks是包含4个18行16列DataFrame的列表,直接传入pd.DataFrame()时,Pandas会把每个DataFrame视为单个元素,形成(4,18,16)的三维结构,而DataFrame仅支持二维输入,因此报错。

针对不同场景的解决方案

场景1:所有DataFrame列名、结构完全一致

用pd.concat()纵向拼接最直接:

import pandas as pd
df2 = pd.concat(target_stocks, ignore_index=True)
  • ignore_index=True会重置合并后的索引,避免原索引重复导致的冲突。

场景2:DataFrame结构存在差异(列名/列数不同)

如果各DataFrame列不完全匹配,可保留所有列,缺失值自动用NaN填充:

df2 = pd.concat(target_stocks, axis=0, join='outer', ignore_index=True)
  • axis=0指定行方向合并,join='outer'保留所有列。

若需要区分每个原始DataFrame的来源,可先添加标识列再合并:

# 给每个DataFrame添加来源标记
for idx, df in enumerate(target_stocks):
    df['source_id'] = f'dataset_{idx+1}'

# 合并所有DataFrame
df2 = pd.concat(target_stocks, ignore_index=True)

场景3:需将三维结构展平为二维数据

如果你的需求不是合并,而是把嵌套的DataFrame结构展平,可通过列表推导式+字典转换实现:

# 把每个DataFrame的行转成字典后合并成一维列表
flattened_rows = [row for df in target_stocks for row in df.to_dict('records')]
df2 = pd.DataFrame(flattened_rows)

内容的提问来源于stack exchange,提问作者user19696249

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:15:32