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_Name
cộ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_Name
trong file dữ liệu, bản đồ của mìnhGDN
,Device_Type
vàDevice_OS
giá 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_Name
chỉ mục, sau đó bạn có thể trực tiếp join
hai tệp dữ liệu trên chỉ mục của chúng Device_Name
.
Device_Name
cộ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.