मेरे पास 2 CSV फाइलें हैं: 'डेटा' और 'मैपिंग':
- 'मैपिंग' फ़ाइल 4 स्तंभ हैं:
Device_Name,GDN,Device_Type, औरDevice_OS। सभी चार कॉलम आबाद हैं। - 'डेटा' फ़ाइल में ये समान कॉलम हैं, जिसमें
Device_Nameकॉलम आबादी वाले और अन्य तीन कॉलम खाली हैं। - मैं अपने अजगर कोड दोनों फ़ाइलों और प्रत्येक के लिए खोलना चाहते हैं
Device_Name, डेटा फ़ाइल में अपनी नक्शाGDN,Device_TypeऔरDevice_OSमानचित्रण फ़ाइल से मूल्य।
मुझे पता है कि केवल 2 कॉलम मौजूद होने पर (1 मैप किए जाने की आवश्यकता है) तानाशाही का उपयोग कैसे किया जाता है, लेकिन मुझे नहीं पता कि इसे कैसे पूरा किया जाए जब 3 कॉलमों को मैप करने की आवश्यकता हो।
निम्नलिखित कोड है जिसके उपयोग से मैंने मैपिंग को पूरा करने की कोशिश की 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)
यह लौट आता है Attribute Error।
कुछ शोध के बाद, मुझे लगता है कि मुझे एक नेस्टेड तानाशाही बनाने की आवश्यकता है, लेकिन मुझे नहीं पता कि यह कैसे करना है।
row[27] = x[row[11]]["Device_OS"]?
Device_Nameइंडेक्स बनाते हैं , फिर आप सीधे joinदो डेटाफ्रेम को उनके इंडेक्स पर भेज सकते हैं Device_Name।
Device_Nameदोनों फाइलों में कॉलम महत्वपूर्ण है, इस कुंजी पर मैं मैपिंग फ़ाइल से डेटा फ़ाइल में Device_OS, GDN और Device_Type मानों को मैप करना चाहता हूं।