我有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
。
经过研究后,我认为我需要创建一个嵌套的字典,但是我不知道如何执行此操作。
你想做类似的事情
—
珍妮·卡里拉
row[27] = x[row[11]]["Device_OS"]
吗?
不一定需要嵌套字典。您可以使用pandas read_csv创建
—
smci
Device_Name
索引,然后可以直接join
将两个数据框放在它们的index上Device_Name
。
Device_Name
column是两个文件中的键,在此键上,我想将Device_OS,GDN和Device_Type值从映射文件映射到数据文件。