Tôi có 2 tệp CSV: 'Dữ liệu' và 'Ánh xạ':
- Tập tin 'Bản đồ' có 4 cột:
Device_Name,GDN,Device_Type, vàDevice_OS. Tất cả bốn cột được điền. - Tệp 'Dữ liệu' có cùng các cột, với
Device_Namecột được điền và ba cột còn lại trống. - Tôi muốn mã Python của tôi để mở cả hai tập tin và cho mỗi
Device_Nametrong file dữ liệu, bản đồ của mìnhGDN,Device_TypevàDevice_OSgiá trị từ tập tin bản đồ.
Tôi biết cách sử dụng dict khi chỉ có 2 cột (cần có 1 bản đồ) nhưng tôi không biết làm thế nào để thực hiện điều này khi 3 cột cần được ánh xạ.
Sau đây là mã sử dụng mà tôi đã cố gắng thực hiện ánh xạ 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)
Nó trở lại Attribute Error.
Sau một số nghiên cứu, tôi nghĩ rằng tôi cần phải tạo ra một chính tả lồng nhau, nhưng tôi không biết làm thế nào để làm điều này.
row[27] = x[row[11]]["Device_OS"]nào?
Device_Namechỉ mục, sau đó bạn có thể trực tiếp joinhai tệp dữ liệu trên chỉ mục của chúng Device_Name.
Device_Namecột là khóa trong cả hai tệp, trên khóa này tôi muốn ánh xạ các giá trị Device_OS, GDN & Device_Type từ ánh xạ tệp sang tệp dữ liệu.