मेरे पास 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 मानों को मैप करना चाहता हूं।