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

Python如何处理CSV错位行列数据,将ID值移回对应列(优先使用csv模块)

CSV错位ID调整实现方案

你的ID均为10位长度的数字串,和两位长度的分数字段有明显区分,核心处理逻辑为:遍历每行的三个字段,筛选出10位长度的字段作为ID值,剩余两个分数值升序排序后分别作为SCORE1、SCORE2。

使用csv模块实现(优先方案)

import csv

# 可根据实际路径修改输入输出地址
input_path = "input.csv"
output_path = "output.csv"

with open(input_path, 'r', encoding='utf-8') as in_f, open(output_path, 'w', encoding='utf-8', newline='') as out_f:
    reader = csv.reader(in_f)
    writer = csv.writer(out_f)
    
    # 写入表头
    header = next(reader)
    writer.writerow(header)
    
    for row in reader:
        # 提取10位长度的ID字段
        id_val = next(field for field in row if len(field) == 10)
        # 剩余字段转整数后升序排序作为两个分数
        scores = sorted([int(field) for field in row if field != id_val])
        writer.writerow([id_val, scores[0], scores[1]])

运行后生成的output.csv即为调整完成的目标文件。

使用pandas实现(备选方案)

import pandas as pd

df = pd.read_csv("input.csv", dtype=str)

def adjust_row(row):
    id_val = row[row.str.len() == 10].iloc[0]
    scores = sorted(row[row != id_val].astype(int).tolist())
    return pd.Series([id_val, scores[0], scores[1]], index=["ID", "SCORE1", "SCORE2"])

df_adjusted = df.apply(adjust_row, axis=1)
df_adjusted.to_csv("output.csv", index=False)

内容的提问来源于stack exchange,提问作者FAISHAL YUSUF BAQIR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:03