文件夹多CSV指定表头内容提取并合并为单个CSV的实现问题
多CSV文件指定列合并实现方案
依赖导入
import pandas as pd from pathlib import Path import os
完整可运行代码
def total(log_path): # 提前定义输出文件路径,避免循环中重复生成覆盖旧数据 out_path = Path(os.getcwd()) / "TOTAL.csv" # 要提取的目标列,注意和CSV第一行的列名完全匹配 target_header = ['1_LENGTH', '2_LENGTH', 'START_POS', 'END_POS', 'RESULT_HIS', 'START_FRAME', 'START_SUPER_FRAME'] # 存储每个文件的有效数据片段 all_data = [] for in_path in Path(log_path).glob('*.csv'): # 读取时跳过第二行多余表头,skiprows=[1]表示跳过索引为1的行(第二行) df = pd.read_csv(in_path, index_col=False, skiprows=[1]) # 筛选目标列,加入总数据列表 all_data.append(df[target_header]) # 合并所有数据,一次性写入输出文件,关闭多余索引列输出 pd.concat(all_data, ignore_index=True).to_csv(out_path, index=False, encoding='utf-8-sig') return
核心修改说明
- 解决原代码每次循环都用写入模式打开输出文件导致的旧数据被覆盖问题,改为先收集所有文件数据再合并写入
- 新增
skiprows=[1]参数适配两行表头的CSV格式,跳过第二行无用的表头行 - 调整列名与需求指定的表头完全匹配,如果你实际CSV中对应列名是
CT_LENGTH、T_LENGTH,修改target_header对应值即可 - 新增
encoding='utf-8-sig'参数避免生成的CSV打开时出现乱码,不需要可直接删除 - 调用时传入你的CSV存放目录路径
log_path即可运行
可选优化:如果存在部分文件缺失目标列的场景,将
df[target_header]替换为df.reindex(columns=target_header),缺失列会自动填充空值,避免程序异常退出。
内容的提问来源于stack exchange,提问作者Neosteam
相关产品推荐
相关产品推荐

