【发布时间】:2013-04-26 08:16:57
【问题描述】:
我有 2 个 CSV 文件:“数据”和“映射”:
- “映射”文件有 4 列:
Device_Name、GDN、Device_Type和Device_OS。所有四列都已填充。 - “数据”文件具有这些相同的列,
Device_Name列已填充,其他三列为空白。 - 我希望我的 Python 代码打开这两个文件,并为数据文件中的每个
Device_Name映射映射文件中的GDN、Device_Type和Device_OS值。
我知道在只有 2 列时如何使用 dict(需要映射 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。
经过一番研究,我认为我需要创建一个嵌套字典,但我不知道如何做到这一点。
【问题讨论】:
-
Device_Name列是两个文件中的键,在此键上我想将 Device_OS、GDN 和 Device_Type 值从映射文件映射到数据文件。 -
你想要像
row[27] = x[row[11]]["Device_OS"]这样的事情吗? -
这不一定需要嵌套字典。你可以使用pandas,read_csv,将
Device_Name设为索引,然后你可以直接join索引上的两个数据框Device_Name。
标签: python python-2.7 dictionary mapping nested