Удаление дубликатов между несколькими CSV-файлами - PullRequest
0 голосов
/ 07 мая 2020

У меня есть несколько файлов CSV с двумя столбцами в каждом из этих файлов CSV:

  1. Ссылки (столбец A)
  2. Описание (столбец B)

Я не знаю, как лучше всего удалить все дубликаты ссылки и описания при обнаружении, оставив только один, чтобы остался только один экземпляр ссылки и описания. Было бы лучше, если бы я мог импортировать все файлы CSV сразу, есть вероятность, что одна ссылка появится в нескольких файлах CSV. Ссылка и описание, если есть дубликат, будут ТОЧНО одинаковыми. Спасибо!

Ответы [ 3 ]

1 голос
/ 07 мая 2020
• 1000 устанавливать.

Обратите внимание, что модуль csv будет возвращать каждую строку в виде списка, который не является хешируемым типом данных. Чтобы сохранить строку в наборе, вам сначала нужно преобразовать ее в кортеж.

import csv

already_seen_rows = set()

with open('output_file.csv', 'w', newline='') as output_file:
    writer = csv.writer(output_file)

    for input_filepath in list_of_input_filepaths:  # os.listdir() might help here
        with open(input_filepath, 'r', newline='') as input_file:
            reader = csv.reader(input_file)

            for row in reader:
                row_tuple = tuple(row)  # Converting to a hashable type so it works with the set

                if row_tuple not in already_seen_rows:
                    writer.writerow(row)
                    already_seen_rows.add(row_tuple)
1 голос
/ 07 мая 2020

Это можно сделать, выполнив pd.concat с последующим drop_duplicates.

import pandas as pd

df1 = pd.read_csv('path/to/file1.csv')
df2 = pd.read_csv('path/to/file2.csv')

df = pd.concat([df1, df2]).drop_duplicates().reset_index(drop=True)

Пожалуйста, обратитесь к ответу stackoverflow здесь , чтобы понять больше.

1 голос
/ 07 мая 2020

Этого можно достичь с помощью Pandas следующим образом:

import pandas as pd

df1 = pd.read_csv("file1.csv")
df2 = pd.read_csv("file2.csv")
df = df1.merge(df2, "outer")
print(df)

Если у вас есть два файла, "file1.csv" состоит из:

file1.csv

и file2.csv, состоящий из:

enter image description here

, вывод приведенного выше кода будет:

    Links               Description
0  movie1  Pirates of the Caribbean
1  movie2                 Star Trek
2  movie3                 Star Wars
3  movie4                James Bond
4  movie5                  Iron Man
5  movie6                 Toy Story

, вы можете экспортировать это в новый файл csv, если вы используете sh через

df.to_csv("file3.csv", index=False)

. Возможно, вы захотите изучить различия между pd.concat и pd.merge. См. эту ссылку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...