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

基于Reg_ID列特定字符拆分大型CSV文件的技术问询

按Reg_ID前缀拆分大型CSV文件

方法一:用Pandas快速实现

处理5.5万行这种量级的文件毫无压力,代码简洁易读:

import pandas as pd

# 读取原CSV,根据实际情况调整编码、分隔符
df = pd.read_csv('your_input_file.csv', encoding='utf-8')

# 从Reg_ID里提取下划线前的研究单元标识
df['Study_Unit'] = df['Reg_ID'].str.split('_').str[0]

# 按单元分组,每个组写入单独的CSV
for unit, group in df.groupby('Study_Unit'):
    # 处理文件名里的非法字符,避免保存失败
    safe_unit = unit.replace('/', '_').replace('\\', '_')
    group.to_csv(f'{safe_unit}_data.csv', index=False, encoding='utf-8')

关键细节

  • str.split('_').str[0]:精准截取Reg_ID中下划线前的部分,不管前缀长度多少都能适配
  • 生成的文件命名格式为[研究单元标识]_data.csv,方便识别
  • 如果你的CSV用分号分隔,给pd.read_csv加个参数sep=';'就行

方法二:用Python标准库CSV模块(无额外依赖)

不想装Pandas的话,用原生模块也能搞定,适合低依赖场景:

import csv
from collections import defaultdict

# 用字典存每个研究单元的所有行数据
unit_rows = defaultdict(list)

# 读取原文件
with open('your_input_file.csv', 'r', encoding='utf-8') as infile:
    reader = csv.DictReader(infile)
    header = reader.fieldnames  # 保存表头
    for row in reader:
        reg_id = row['Reg_ID']
        # 处理Reg_ID里没有下划线的极端情况
        study_unit = reg_id.split('_')[0] if '_' in reg_id else reg_id
        unit_rows[study_unit].append(row)

# 把每个单元的数据写入新文件
for unit, rows in unit_rows.items():
    safe_unit = unit.replace('/', '_').replace('\\', '_')
    with open(f'{safe_unit}_data.csv', 'w', newline='', encoding='utf-8') as outfile:
        writer = csv.DictWriter(outfile, fieldnames=header)
        writer.writeheader()
        writer.writerows(rows)

关键细节

  • defaultdict(list):自动为每个新的研究单元创建列表,不用手动判断
  • newline='':避免Windows系统下写入CSV时出现多余空行
  • 编码有问题的话,试试把utf-8换成gbk或者utf-8-sig

通用注意事项

  • 记得把代码里的your_input_file.csv换成你实际的文件名
  • 若研究单元标识里有其他特殊字符(比如冒号、问号),可以在safe_unit里继续添加替换规则

内容的提问来源于stack exchange,提问作者Adam Johns

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:07