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
相关产品推荐
相关产品推荐

