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
相关产品推荐
相关产品推荐

