📜  python 切换列顺序 csv - Python (1)

📅  最后修改于: 2023-12-03 15:34:10.272000             🧑  作者: Mango

Python 切换列顺序 csv

在数据处理的过程中,有时需要对 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 文件的每一行,将每行中指定列的值按照传入的列顺序写入输出文件。

最后,关闭输入文件和输出文件。

参考链接: