Pandas循环拼接DataFrame异常:主表每次被重置为循环表
问题排查与修复
- 核心错误是赋值语句写错:第一次循环分支里的
firstloop == False是比较操作,不会修改firstloop的布尔值。这导致每次循环都会进入if firstloop分支,把main_db重置为当前的loop_db,完全不会执行else里的拼接逻辑。 - 额外优化:没必要每次都用
.copy(),pd.concat会返回新的DataFrame;建议拼接时加上ignore_index=True,避免索引重复问题。
修复后的代码:
firstloop = True for x in x_list: loop_db = myFunctionReturnADataframe(x) if firstloop: main_db = loop_db firstloop = False # 改为赋值运算符= else: main_db = pd.concat([main_db, loop_db], ignore_index=True)
更高效的写法(适合数据量较大的场景):先收集所有子DataFrame,最后一次性拼接,避免循环内反复拼接的性能损耗
df_list = [] for x in x_list: df_list.append(myFunctionReturnADataframe(x)) main_db = pd.concat(df_list, ignore_index=True)
内容的提问来源于stack exchange,提问作者Vincent Coulombe
相关产品推荐
相关产品推荐

