📜  删除csv文件python中的重复行(1)

📅  最后修改于: 2023-12-03 14:50:17.902000             🧑  作者: Mango

删除 CSV 文件 Python 中的重复行

在数据分析和数据处理中,常常需要操作 CSV 文件。当 CSV 文件中有重复行时,可能会影响我们的分析结果。因此,我们需要对 CSV 文件进行去重操作。

下面是一些 Python 代码片段,可以帮助您删除 CSV 文件中的重复行。

读取 CSV 文件

首先,我们需要使用 Python 的 csv 模块读取 CSV 文件。可以使用以下代码读取 CSV 文件中的所有行。

import csv

def read_csv_file(file):
    with open(file, 'r') as f:
        reader = csv.reader(f)
        rows = [row for row in reader]
        return rows

在上面的代码中,csv.reader 函数返回一个可迭代的对象,其中每个元素是一行文本。

删除重复行

使用 Python 的 set 数据结构可以删除列表中的重复元素。我们可以使用以下代码删除 CSV 文件中的重复行。

def remove_duplicates(rows):
    unique_rows = []
    for row in rows:
        if row not in unique_rows:
            unique_rows.append(row)
    return unique_rows

在上面的代码中,我们使用一个空列表 unique_rows 存储唯一的行。然后,我们迭代 CSV 文件中的每一行,检查该行是否已经存在于唯一的行中。如果该行不存在于唯一的行中,则将该行添加到唯一的行中。

写入 CSV 文件

最后,我们需要将去重后的数据写入新的 CSV 文件中。可以使用以下代码将去重后的数据写入新的 CSV 文件中。

def write_csv_file(file, rows):
    with open(file, 'w', newline='') as f:
        writer = csv.writer(f)
        for row in rows:
            writer.writerow(row)

在上面的代码中,我们使用 Python 的 csv.writer 函数创建一个写入器对象。然后,我们迭代唯一的行,并使用 writer.writerow 方法将每一行写入新的 CSV 文件中。

完整代码

下面是完整的 Python 代码片段。

import csv

def read_csv_file(file):
    with open(file, 'r') as f:
        reader = csv.reader(f)
        rows = [row for row in reader]
        return rows

def remove_duplicates(rows):
    unique_rows = []
    for row in rows:
        if row not in unique_rows:
            unique_rows.append(row)
    return unique_rows

def write_csv_file(file, rows):
    with open(file, 'w', newline='') as f:
        writer = csv.writer(f)
        for row in rows:
            writer.writerow(row)

if __name__ == '__main__':
    input_file = 'input.csv'
    output_file = 'output.csv'
    rows = read_csv_file(input_file)
    unique_rows = remove_duplicates(rows)
    write_csv_file(output_file, unique_rows)

在上面的代码中,我们首先使用 read_csv_file 函数读取输入 CSV 文件中的所有行。然后,我们使用 remove_duplicates 函数删除重复行。最后,我们使用 write_csv_file 函数将去重后的数据写入输出 CSV 文件中。