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

遍历多个CSV文件合并为DataFrame时for循环仅执行一次的问题

问题原因

你代码的核心问题是data_final = pd.DataFrame()初始化语句放在了for循环内部:

  • 每次循环迭代时都会将已经存入合并数据的data_final重置为空DataFrame,最终只会保留最后一次循环读取的CSV数据,效果上看起来就像循环只执行了一次。
  • 补充说明:pandas 1.4+版本已经将append方法标记为弃用,更高版本会直接移除该方法,更推荐使用pd.concat做数据合并。
修正后代码

基础修正版(适配原有写法逻辑)

import pandas as pd

csvs = [
    "2014-2015.csv",
    "2015-2016.csv",
    "2016-2017.csv",
    "2017-2018.csv",
    "2018-2019.csv",
    "2019-2020.csv",
    "2020-2021.csv",
    "2021-2022.csv"
]
# 初始化放在循环外部
data_final = pd.DataFrame()
for csv in csvs: 
    data = pd.read_csv(csv)
    data_final = pd.concat([data_final, data], ignore_index=True)

更高效的写法(推荐)

先把所有DataFrame存入列表再一次性合并,避免循环中多次合并产生的性能损耗:

import pandas as pd

csvs = [
    "2014-2015.csv",
    "2015-2016.csv",
    "2016-2017.csv",
    "2017-2018.csv",
    "2018-2019.csv",
    "2019-2020.csv",
    "2020-2021.csv",
    "2021-2022.csv"
]
df_list = []
for csv in csvs:
    df_list.append(pd.read_csv(csv))
# 一次性合并所有数据,ignore_index=True可以重置行索引避免重复
data_final = pd.concat(df_list, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:15:04