📅  最后修改于: 2023-12-03 15:34:10.272000             🧑  作者: Mango
在数据处理的过程中,有时需要对 csv 文件的列进行顺序调整,而 Python 提供了简单易用的 csv 模块和列表操作,方便进行列顺序调整。
下面演示一个简单的列顺序调整的程序。
import csv
def reorder_csv_columns(input_file, output_file, header, order):
"""
读取 input_file 文件,按照 order 中给出的列顺序调整列,并将结果写入到 output_file。
header 可以为 0 或 1,分别指定是否保留 CSV 的首行(即 header 行)。
例如:
reorder_csv_columns('input.csv', 'output.csv', 1, [1, 0, 2])
表示将 input.csv 中的第 2 列放在第 1 列,第 1 列放在第 2 列,第 3 列保持原位置,并将结果保存到 output.csv。
"""
with open(input_file, 'r') as fin, open(output_file, 'w', newline='') as fout:
reader = csv.reader(fin)
writer = csv.writer(fout)
if header == 1:
headers = next(reader)
writer.writerow([headers[pos] for pos in order])
for row in reader:
writer.writerow([row[pos] for pos in order])
该程序中的核心是 reorder_csv_columns
函数,它需要传入三个参数,分别是输入文件名、输出文件名、列顺序(以列表形式给出)。
首先,我们打开输入文件和输出文件,并创建 csv 读写对象。如果 header 参数为 1,则读取 CSV 的首行,并按照传入的列顺序写入输出文件;否则跳过首行。
接着,遍历 csv 文件的每一行,将每行中指定列的值按照传入的列顺序写入输出文件。
最后,关闭输入文件和输出文件。
参考链接: