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

如何用Python内置库按列唯一值生成多个文件

使用Python内置库按列唯一值拆分CSV文件

完全可以用Python内置的csv模块实现这个需求,不需要依赖pandas。下面直接讲实现逻辑和代码:

核心实现步骤

  • 读取原始CSV文件,用指定分隔符解析每行数据
  • 按uniquevalue列的唯一值对数据分组,把相同值的行归类
  • 遍历每个分组,以唯一值为文件名,写入表头和对应行数据

完整代码示例

假设你的原始数据保存在input.csv文件中,代码如下:

import csv

# 配置参数
input_file = "input.csv"
delimiter = "|"  # 你的CSV用|分隔,若为逗号则改成","

# 第一步:读取数据并按uniquevalue分组
data_groups = {}
header = None

with open(input_file, mode='r', newline='', encoding='utf-8') as f:
    # 用DictReader可以通过列名直接取值,不用记索引
    reader = csv.DictReader(f, delimiter=delimiter)
    header = reader.fieldnames  # 保存表头
    
    for row in reader:
        # 取出当前行的uniquevalue值作为分组键
        group_key = row['uniquevalue']
        # 若分组不存在则初始化空列表
        if group_key not in data_groups:
            data_groups[group_key] = []
        # 将当前行加入对应分组
        data_groups[group_key].append(row)

# 第二步:遍历分组,写入对应文件
for group_key, rows in data_groups.items():
    output_filename = f"{group_key}.csv"
    with open(output_filename, mode='w', newline='', encoding='utf-8') as f:
        # 用DictWriter按表头顺序写入数据
        writer = csv.DictWriter(f, fieldnames=header, delimiter=delimiter)
        writer.writeheader()  # 先写入表头
        writer.writerows(rows)  # 写入当前分组的所有行

关键细节说明

  • csv.DictReader/csv.DictWriter:这两个类把每行数据转成字典,通过列名操作数据,比用索引更直观,也能保证输出的列顺序和原文件一致
  • data_groups字典:用来临时存储分组数据,键是uniquevalue的唯一值,值是对应行的列表
  • newline='':避免在Windows系统下写入文件时出现多余的空行,保证跨平台兼容性
  • 重复行处理:代码会保留原文件中的重复行,和你给出的示例输出一致

额外注意事项

  • 如果uniquevalue包含特殊字符(比如/、\、:等),这些字符在文件名中是非法的,需要提前处理(比如替换成下划线)
  • 确保输入文件路径正确,若文件和脚本在同一目录下,直接写文件名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:06:13