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

Python递归构建DataFrame遇TypeError:原因及解决方法咨询

问题分析与解决

报错原因

pd.concat()的第一个参数要求是可迭代的pandas对象集合(比如列表、元组),但你的代码直接传递了单个DataFrame(recursive_df(n-1)的返回值),同时第二个参数传的是字典而非DataFrame,这两个问题共同触发了TypeError。

修正后的代码

import pandas as pd

def recursive_df(n):
    if n == 1:
        return pd.DataFrame({"A": [1], "B": [1]})
    if n >= 2:
        # 将递归结果与新生成的DataFrame放入列表,作为pd.concat的参数
        return pd.concat(
            [recursive_df(n-1), pd.DataFrame({"A": [n], "B": [n*n]})],
            axis=0,
            ignore_index=True
        )

关键修改点

  • 把需要拼接的两个DataFrame打包成列表,满足pd.concat对可迭代输入的要求
  • 将字典{"A":[n],"B":[n*n]}转为DataFrame后再参与拼接
  • 添加ignore_index=True(可选但推荐):拼接后重置索引,避免出现重复索引的问题

补充说明

递归方式确实能避免显式for循环,但要注意Python默认递归深度限制(约1000),如果n的取值过大,可能需要改用其他方式实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:05:33