如何自动生成由df1到dfN组成的pandas DataFrame列表?
错误原因
你之前的两种方案本质都是生成了字符串格式的变量名,没有获取到变量对应的实际DataFrame对象:
- 方案1直接将生成器对象append进列表,所以列表中存储的是生成器而非DataFrame
- 方案2append的是字符串形式的变量名,因此元素类型为字符串,不符合要求
解决方案
方法1:通过作用域变量字典获取(适合已生成好所有df的场景)
如果你的df都定义在全局作用域,直接从globals()字典中按变量名取值即可:
dfs = [globals()[f'df{i}'] for i in range(1, 101)]
如果df定义在函数内部的局部作用域,把globals()替换为locals()即可。
方法2:优化生成逻辑(更推荐的工程实践)
如果你还没生成这些df,建议生成时就直接存入列表,避免后续额外处理:
dfs = [] for i in range(100): # 这里写你生成每个df的逻辑 df = pd.DataFrame() dfs.append(df)
这样生成的dfs直接就是符合要求的DataFrame列表,不需要单独命名df1到df100。
内容的提问来源于stack exchange,提问作者YKim
相关产品推荐
相关产品推荐

