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

循环使用pd.concat拼接多份CSV数据集仅返回单份数据问题

问题原因

  • 核心错误是循环内对combined_dataset的赋值逻辑完全错误:
    1. 每次调用pd.concat([pd.read_csv(f)])时,传入的列表里只有当前单次读取的单个CSV对应的DataFrame,concat操作等同于直接返回该单个DataFrame,没有实现多数据拼接
    2. 每次循环都直接把上述结果赋值给combined_dataset,直接覆盖了上一次循环的结果,最终变量里只保留了循环处理的最后一个CSV文件的内容,也就是你看到的2019年、邮政编码为000001的对应数据,这份文件刚好是你文件夹排序下最后一个被遍历到的CSV。

正确实现方式

推荐先把所有读取的DataFrame存入列表,最后统一做拼接,内存效率更高:

import os
import pandas as pd

directory = '/MyDirectory'
os.chdir(directory) 
files = os.listdir()

# 初始化空列表存储所有读取到的DataFrame
df_list = []
for f in files:
    if f.endswith('.csv'):
        df_list.append(pd.read_csv(f))

# 所有文件读完后统一拼接,ignore_index=True可以重置行索引避免重复
combined_dataset = pd.concat(df_list, ignore_index=True)

补充说明:如果要在循环内逐步拼接,写法为combined_dataset = pd.concat([combined_dataset, pd.read_csv(f)], ignore_index=True),但该方式每次循环都要重新生成新的DataFrame,文件数量多的时候效率远低于先存列表再统一拼接的方案,不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:54:04