循环导入多个CSV文件合并至DataFrame时首行被覆盖问题求助
问题分析
你的代码核心问题是变量更新逻辑错误:
- 循环的
else分支里,你传入的是初始的output_df(也就是最开始的df),而非上一次合并后的结果z,导致每次合并都是把新数据和初始DataFrame拼接,而非累加追加。 - 多余的
c计数器和分支判断完全没必要,徒增逻辑混乱。
修正后的代码
import os import pandas as pd # 加载初始文件 initial_csv_path = 'c:/1.csv' output_df = pd.read_csv(initial_csv_path) csv_directory = 'c:/' Z = 21 def loadnext(Tnum, csvpath, Sdf): Barnum_String = str(Tnum) nextfile = os.path.join(csvpath, Barnum_String + '.csv') new_data_df = pd.read_csv(nextfile) return pd.concat([Sdf, new_data_df], ignore_index=True) # 循环3次,依次合并22、23、24.csv for _ in range(3): Z += 1 output_df = loadnext(Z, csv_directory, output_df) print(output_df)
关键修改点
- 移除冗余的
c计数器和分支判断,直接用output_df持续保存累加后的结果。 - 每次循环都将
output_df更新为合并后的新DataFrame,确保下一次合并基于最新的累加结果。 - 简化逻辑,让代码更易读、易维护。
内容的提问来源于stack exchange,提问作者Dan S
相关产品推荐
相关产品推荐

