Объединение нескольких файлов CSV и удаление дубликатов по полю - PullRequest
0 голосов
/ 02 мая 2018

Мне нужно сопоставить данные из нескольких файлов CSV. Например, если у меня есть три CSV-файла.

вход 1 csv

PANYNJ LGA WEST 1,available, LGA West GarageFlushing
PANYNJ LGA WEST 4,unavailable,LGA West Garage
iPark - Tesla,unavailable,530 E 80th St

вход 2 csv

PANYNJ LGA WEST 4,unavailable,LGA West Garage
PANYNJ LGA WEST 5,available,LGA West Garage

вход 3 csv

PANYNJ LGA WEST 5,available,LGA West Garage
imPark - Tesla,unavailable,611 E 83rd St

Первый столбец - name, второй - status, а последний - address. Я хотел бы объединить эти три документа в один CSV-файл, если они имеют одинаковое имя. Мой желаемый выходной файл похож на

вывод csv

PANYNJ LGA WEST 1,available, LGA West GarageFlushing
PANYNJ LGA WEST 4,unavailable,LGA West Garage
iPark - Tesla,unavailable,530 E 80th St
PANYNJ LGA WEST 5,available,LGA West Garage
imPark - Tesla,unavailable,611 E 83rd St

Я пытаюсь исправить это с помощью pandas или CSV, но я не уверен, как это сделать.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 02 мая 2018

С pandas вы можете использовать pd.concat, затем pd.drop_duplicates:

import pandas as pd
from io import StringIO

str1 = StringIO("""PANYNJ LGA WEST 1,available, LGA West GarageFlushing
PANYNJ LGA WEST 4,unavailable,LGA West Garage
iPark - Tesla,unavailable,530 E 80th St""")

str2 = StringIO("""PANYNJ LGA WEST 4,unavailable,LGA West Garage
PANYNJ LGA WEST 5,available,LGA West Garage""")

str3 = StringIO("""PANYNJ LGA WEST 5,available,LGA West Garage
imPark - Tesla,unavailable,611 E 83rd St""")

# replace str1, str2, str3 with 'file1.csv', 'file2.csv', 'file3.csv'
df1 = pd.read_csv(str1, header=None)
df2 = pd.read_csv(str2, header=None)
df3 = pd.read_csv(str3, header=None)

res = pd.concat([df1, df2, df3], ignore_index=True)\
        .drop_duplicates(0)

print(res)

                   0            1                         2
0  PANYNJ LGA WEST 1    available   LGA West GarageFlushing
1  PANYNJ LGA WEST 4  unavailable           LGA West Garage
2      iPark - Tesla  unavailable             530 E 80th St
4  PANYNJ LGA WEST 5    available           LGA West Garage
6     imPark - Tesla  unavailable             611 E 83rd St
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...