Ho 2 file CSV: 'Dati' e 'Mappatura':
- File 'Mapping' ha 4 colonne:
Device_Name
,GDN
,Device_Type
, eDevice_OS
. Tutte e quattro le colonne sono popolate. - Il file 'Dati' ha queste stesse colonne, con la
Device_Name
colonna popolata e le altre tre colonne vuote. - Voglio che il mio codice Python per aprire sia i file e per ogni
Device_Name
nel file di dati, mappa la suaGDN
,Device_Type
eDevice_OS
valore dal file di mapping.
So usare dict quando sono presenti solo 2 colonne (1 è necessario per essere mappato) ma non so come farlo quando 3 colonne devono essere mappate.
Di seguito è riportato il codice con cui ho cercato di eseguire il mapping di 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)
Ritorna Attribute Error
.
Dopo alcune ricerche, penso di aver bisogno di creare un dict nidificato, ma non ho idea di come farlo.
row[27] = x[row[11]]["Device_OS"]
?
Device_Name
l'indice, quindi è possibile direttamente join
i due frame di dati sul loro indice Device_Name
.
Device_Name
colonna è la chiave in entrambi i file, su questa chiave voglio mappare i valori Device_OS, GDN e Device_Type dal file di mapping al file di dati.