Python读取文件夹内按数字命名CSV文件时排序异常如何解决
问题修复方案
问题原因
glob返回的文件列表默认采用字符串字典序排序,对数字组成的文件名而言,
10.csv的字符串优先级高于2.csv,因此会出现不符合预期的读取顺序。
修改后代码
import os import glob import pandas as pd def csv_readout_folder(path): files = glob.glob(os.path.join(path, '*.csv')) # 按文件名数字部分做整数排序,修复读取顺序问题 files = sorted(files, key=lambda f: int(os.path.splitext(os.path.basename(f))[0])) all_data = pd.DataFrame() for f in files: data = csv_readout(path,f) # 新增ignore_index避免合并后索引重复 all_data = pd.concat([all_data, data], ignore_index=True) return all_data
核心修改说明
- 路径拼接改用
os.path.join,适配Windows、macOS、Linux等不同系统的路径格式,避免手动写/带来的兼容性问题 - 新增
sorted自定义排序:提取每个csv文件的纯文件名,转为整数后作为排序依据,实现1、2、3……96的自然顺序读取 - 可选优化:
pd.concat添加ignore_index=True参数,合并后自动重置行索引,避免后续数据处理时出现索引重复的异常
内容的提问来源于stack exchange,提问作者Isabel Waibel
相关产品推荐
相关产品推荐

