Mam 2 pliki CSV: „Dane” i „Mapowanie”:
- Plik 'Mapping' ma 4 kolumny:
Device_Name
,GDN
,Device_Type
, iDevice_OS
. Wszystkie cztery kolumny są wypełnione. - Plik „Dane” zawiera te same kolumny, z
Device_Name
wypełnionymi kolumnami, a pozostałe trzy kolumny są puste. - Chcę, aby mój kod Pythona, aby otworzyć oba pliki i dla każdego
Device_Name
pliku danych, map jejGDN
,Device_Type
orazDevice_OS
wartości z pliku odwzorowania.
Wiem, jak używać dict, gdy obecne są tylko 2 kolumny (1 jest potrzebna do zmapowania), ale nie wiem, jak to zrobić, gdy trzeba zmapować 3 kolumny.
Poniżej znajduje się kod, za pomocą którego próbowałem wykonać mapowanie Device_Type
:
x = dict([])
with open("Pricing Mapping_2013-04-22.csv", "rb") as in_file1:
file_map = csv.reader(in_file1, delimiter=',')
for row in file_map:
typemap = [row[0],row[2]]
x.append(typemap)
with open("Pricing_Updated_Cleaned.csv", "rb") as in_file2, open("Data Scraper_GDN.csv", "wb") as out_file:
writer = csv.writer(out_file, delimiter=',')
for row in csv.reader(in_file2, delimiter=','):
try:
row[27] = x[row[11]]
except KeyError:
row[27] = ""
writer.writerow(row)
Wraca Attribute Error
.
Po kilku badaniach myślę, że muszę utworzyć zagnieżdżony dykt, ale nie mam pojęcia, jak to zrobić.
row[27] = x[row[11]]["Device_OS"]
?
Device_Name
indeks, a następnie możesz bezpośrednio join
umieścić dwie ramki danych w ich indeksie Device_Name
.
Device_Name
kolumna jest kluczem w obu plikach, w tym kluczu chcę zmapować wartości Device_OS, GDN i Device_Type z pliku mapowania do pliku danych.