Создание одного выходного файла из 3 CSV-файлов с использованием Python - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть 3 файла CSV.Имена ниже

AD.csv
ID.csv
MD.csv

AD.csv
A.Net    ATVS
A&E HD  60 Days In
AXSTV    60 Days : Watch Along
BET HD   Behind Bars: Rookie Year
Bloomberg    Biggie: The Life of Notorious B.I.G.

ID.csv
I.Net  ITvs
AETVHD  60 Days In
AXSTV   60 Days : Watch Along 
BETHD    Behind Bars: Rookie Year
BLOOMHD Dog the Bounty Hunter

MD.csv
A.Net   I.Net
A&E HD  AETVHD
AXSTV   AXSTV
BET HD  BETHD
Bloomberg   BLOOMHD

В MD.csv 'a.net' = 'I.net', что означает, что я должен отобразить данные в 'atvs' с 'itvs', где MD.csv 'a.net = i.net 'Я новичок в написании скрипта на Python, кто-нибудь может мне помочь отобразить это?

import csv
with open('E:/ad.csv', 'r') as lookuplist:
with open('E:/id.csv', 'r') as csvinput:
with open('vlookupout', 'w') as output:

reader = csv.reader(lookuplist)
reader2 = csv.reader(csvinput)
writer = csv.writer(output)

for 'itvs' in reader2:
for 'atvs' in reader:
if itvs[0] == atvs[0]:
itvs.append(atvs[1:])
writer.writerow(itvs)

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете сделать это с помощью панд.

import pandas as pd

# read in the csv's
ad_df = pd.read_csv('AD.csv', sep=r'\s\s+', engine='python')
id_df = pd.read_csv('ID.csv', sep=r'\s\s+', engine='python')
md_df = pd.read_csv('MD.csv', sep=r'\s\s+', engine='python')

# Combine the csv's using MD.csv
result = pd.merge(ad_df,md_df[['A.Net', 'I.Net']], on='A.Net')
result = pd.merge(result,id_df[['I.Net', 'ITvs']], on='I.Net')

# in case you want to drop 'I.Net' add:
result.drop('I.Net', axis=1, inplace=True)

#export to csv:
result.to_csv('result.csv', index=False)

Примечание: у ваших CSV есть некоторые несоответствия в именах заголовков.Я использовал имена в моем сценарии точно так, как указано.Как отмечается в моем комментарии, ваша CSV-разлука выглядит нелепо.Я сделал одно небольшое изменение в CSV, добавив дополнительный пробел между "BLOOMHD" и "Dog the ...".

0 голосов
/ 29 ноября 2018

Если у вас нет ограничений на зависимости, используйте DataFrame из библиотеки pandas.

Используя DataFrames, вы можете просто читать и загружать файлы CSV в виде таблиц.

ad = pd.read_csv('E:\ad.csv')
id = pd.read_csv('E:\id.csv')

... и выполнять на них объединение / слияние / агрегирование.

result = pd.merge(ad,
             id[['I.Net', 'ITVs']],
             on='I.Net')

Это будет намного проще и гибче в соответствии с вашими требованиями.

...