使用Pandas合并导出csv文件顺序混乱,如何调整为目标格式?
问题原因
os.listdir()读取目录返回的文件名默认按字符串字典序排列,会出现Sales_10.csv排在Sales_2.csv之前的问题,导致合并后数据的月份顺序混乱- 原代码导出CSV时默认写入行索引,会额外生成一列无意义的序号列,和预期输出格式不符
修正后代码
import pandas as pd import os all_months_data = [] # 筛选csv文件并按文件名中的月份数字排序 files = [file for file in os.listdir('Sales_Data/') if file.endswith('.csv')] files.sort(key=lambda x: int(x.split('_')[1].split('.')[0])) for file in files: df = pd.read_csv(os.path.join('Sales_Data', file)) all_months_data.append(df) # 合并所有数据并重置行索引 all_months_data = pd.concat(all_months_data, ignore_index=True) # 导出时取消索引列写入 all_months_data.to_csv('all_data.csv', index=False)
改动说明
- 对读取的文件列表按月份做自然排序:提取文件名中的数字月份作为排序key,保证1-12月按时间顺序合并
- 改用列表暂存所有单月数据后一次性合并,相比循环拼接性能更高,同时通过
ignore_index=True重置全局行索引,避免索引重复 - 导出时添加
index=False参数,取消多余的行索引列输出,匹配预期格式
内容的提问来源于stack exchange,提问作者Magomed
相关产品推荐
相关产品推荐

