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

求助:移除CSV表头、转置数据并合并900个文件,含十六进制转十进制

解决CSV批量处理与格式转换问题

我来帮你完善代码,解决你遇到的重复写入表头、数据转置拼接、十六进制转十进制这些问题,先梳理下你的核心需求:

  • 批量读取同一文件夹下的900个CSV文件
  • 从文件名提取4个字段作为新CSV的前4列
  • 将每个原CSV的col1/col2数据转置为逗号分隔的字符串(同时把十六进制转十进制)
  • 合并所有数据到一个新CSV,表头仅写入一次

你的原代码存在几个关键问题:缺少必要模块导入、遍历逻辑冗余、重复写入表头、数据拼接方式错误,以及缺少十六进制转换逻辑,下面是修正并优化后的完整代码:

import os
import pandas as pd
import csv

# 定义输入文件夹和输出文件路径
input_folder = 'c:\\path'
output_csv = 'c:\\path\\merged_result.csv'

# 初始化结果列表,先加入表头
final_data = [['col1', 'col2', 'col3', 'col4', 'col5', 'col6']]

# 仅遍历当前文件夹下的CSV文件(不处理子文件夹)
for filename in os.listdir(input_folder):
    if filename.endswith('.csv'):
        # 按下划线分割文件名,提取4个目标字段(比按索引截取更灵活)
        name_parts = filename.split('_')
        col1_val = name_parts[0]
        col2_val = name_parts[1]
        col3_val = name_parts[2]
        # 去掉最后一部分的.csv后缀
        col4_val = name_parts[3].replace('.csv', '')
        
        # 读取原CSV文件(注意:你的示例文件是空格分隔,若实际是逗号则改delimiter=',')
        file_path = os.path.join(input_folder, filename)
        df = pd.read_csv(file_path, delimiter=' ', encoding='latin-1')
        
        # 把col1/col2的十六进制值转成十进制,再拼接成逗号分隔的字符串
        # 如果原数据已经是十进制,去掉int(val,16)直接用str(val)即可
        col5_val = ','.join(str(int(val, 16)) for val in df['col1'])
        col6_val = ','.join(str(int(val, 16)) for val in df['col2'])
        
        # 将当前文件的所有字段加入结果列表
        final_data.append([col1_val, col2_val, col3_val, col4_val, col5_val, col6_val])

# 一次性写入所有数据到输出文件,避免重复打开文件
with open(output_csv, 'w', newline='', encoding='latin-1') as f:
    writer = csv.writer(f)
    writer.writerows(final_data)

print(f"处理完成!结果已保存至 {output_csv}")

关键细节说明:

  1. 文件遍历优化:用os.listdir代替os.walk,只处理当前文件夹的文件,避免子文件夹干扰
  2. 文件名解析:用split('_')分割文件名,比固定索引截取更容错,不怕文件名长度变化
  3. 十六进制转换:通过int(val, 16)将十六进制字符串转成十进制整数,再拼接成目标格式
  4. 批量写入:先把所有数据存入列表,最后一次性写入,既提升效率,也不会重复写入表头
  5. 分隔符适配:你的示例文件是空格分隔,若实际CSV用逗号分隔,把delimiter=' '改成delimiter=','即可

内容的提问来源于stack exchange,提问作者T.Mou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:50:06