Python按特征分组CSV文件并合并导出代码修正求助
问题修正:按分组合并CSV并导出对应文件
原代码错误分析
原合并导出的循环存在以下问题:
- 遍历
dictionary.items()时,未拆分分组键和文件路径列表,直接将元组传入pd.read_csv(),导致参数类型错误 - 使用全局的
all_df存储数据,未按分组清空,会导致不同组的数据混在一起合并 - 导出文件名固定为
'value',无法生成与分组对应的目标文件 - 每次循环都重复合并所有历史数据,造成数据冗余且逻辑错误
修正后的代码片段
替换原错误的循环部分,修正后的代码如下:
# 遍历分组字典的键和对应文件列表 for group_key, file_paths in dictionary.items(): # 每个分组单独创建临时列表存储DataFrame group_dfs = [] for file_path in file_paths: df = pd.read_csv(file_path) group_dfs.append(df) # 合并当前分组的所有DataFrame concat_df = pd.concat(group_dfs, axis=0, ignore_index=True) # 按分组键导出CSV文件 concat_df.to_csv(f"{group_key}.csv", index=False)
完整修正代码
如果需要完整的可运行代码:
import glob import pandas as pd path = r'C:\Users\*.csv' filelist = glob.glob(path) dictionary = {} for x in filelist: group = dictionary.get(x.split('_')[3], []) group.append(x) dictionary[x.split('_')[3]] = group # 修正后的合并导出逻辑 for group_key, file_paths in dictionary.items(): group_dfs = [] for file_path in file_paths: df = pd.read_csv(file_path) group_dfs.append(df) concat_df = pd.concat(group_dfs, axis=0, ignore_index=True) concat_df.to_csv(f"{group_key}.csv", index=False)
修正关键点说明
- 遍历字典时同时获取分组键和对应文件路径列表,明确每个分组的处理对象
- 每个分组使用独立的
group_dfs列表存储数据,避免不同分组的数据互相干扰 - 使用f-string生成导出文件名
{group_key}.csv,确保每个分组导出对应名称的文件 - 读取完当前分组所有文件后再执行合并,逻辑更清晰且避免重复合并操作
内容的提问来源于stack exchange,提问作者Kelvin Lo
相关产品推荐
相关产品推荐

