Tenho 2 arquivos CSV: 'Data' e 'Mapping':
- Arquivo 'Mapping' tem 4 colunas:
Device_Name
,GDN
,Device_Type
, eDevice_OS
. Todas as quatro colunas são preenchidas. - O arquivo 'Data' possui essas mesmas colunas, com a
Device_Name
coluna preenchida e as outras três colunas em branco. - Eu quero meu código Python para abrir os arquivos e para cada
Device_Name
no arquivo de dados, mapear suaGDN
,Device_Type
eDevice_OS
valor do arquivo de mapeamento.
Eu sei como usar o dict quando apenas duas colunas estão presentes (é necessário que 1 seja mapeado), mas não sei como fazer isso quando três colunas precisam ser mapeadas.
A seguir está o código usando o qual tentei realizar o mapeamento de 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)
Retorna Attribute Error
.
Depois de pesquisar, acho que preciso criar um ditado aninhado, mas não faço ideia de como fazer isso.
row[27] = x[row[11]]["Device_OS"]
?
Device_Name
o índice e, em seguida, você pode diretamente join
os dois quadros de dados em seu índice Device_Name
.
Device_Name
coluna é a chave nos dois arquivos. Nesta chave, quero mapear os valores Device_OS, GDN e Device_Type do arquivo de mapeamento para o arquivo de dados.