我有一個很大的Excel文件,包含36352行,包含盜竊信息。每行包含一個日期和發生事件的市政府的名稱。我試圖將這個數據集轉換爲每個城市的日曆地圖,說明一年中每天有多少盜竊案。詞典:增加一個鍵的價值也被添加到其他鍵
我首先創建了一個日曆地圖(字典),其中日期是關鍵,值是盜竊的數量(初始化爲0):{day1: 0, day2: 0}
。
接下來我做了另一個字典,其中的鍵是城市的名稱和值是日曆字典。
例如爲:
Dictionary['New York'] = {day1: 0, day2: 0, day3: 0}
這個初始化工作正常。
下一步我帶是去通過排我的數據集行(寫入content_split),把全市的名稱和事件作爲鍵的日期,並加1的值:
Dictionary[name-in-column-14-of-excel-file][day-of-event] += 1
我寫了這是一個循環:
for k in range(1,len(excelfile)): #for all rows in the excel file
# datetime.datetime(year,month,day)
d = datetime.datetime(int(content_split[k][9]),int(content_split[k][8]),int(content_split[k][7]))
# Dictionary[name-of-municipality][timestamp-in-utc] += 1
Municipality_dict[content_split[k][14]][calendar.timegm(d.timetuple())] += 1
如果我再看看日曆字典1個市,我得到非常高的數字(176起入室盜竊案1天1個市)和不同城市的日曆地圖是相同的。因此,我的市政鑰匙似乎不起作用,但我不知道。
有誰知道我在做什麼錯?
編輯對我如何創建的字典:
# Open map containing the days
with open('days.csv') as f1:
days_temp = f1.readlines()
alldays = []
# Get dd;mm;yy format to [dd, mm, yy] format
for day in days_temp:
alldays.append(day.strip().split(';'))
Timestamp = {}
# Convert days into UTC codes
for i in range(len(alldays)):
d = datetime.datetime(int(alldays[i][2]),int(alldays[i][1]),int(alldays[i][0]))
# dictionary[UTC-time-code] = 0 (no burglaries occurred)
Timestamp[calendar.timegm(d.timetuple())] = 0
# Open file with names of municipalities
with open('file2.csv') as f2:
municipalities_temp = f2.readlines()
municipalities_dict = {}
# dictionary[name-of-municipality] = calendar
for instance in municipalities_temp:
municipalities_dict[instance.strip()] = Timestamp
你是如何創建這些字典的?您正在共享引用,並且只有*一個*字典,而不是單獨的對象。 – 2014-10-09 14:14:55
如果你做了類似'd = {'day1':0,...}; M_D ['紐約'] = d; M_D ['Boston'] = d; ...',你會看到你得到的結果。 – chepner 2014-10-09 14:16:36
我編輯了我原來的帖子。我一開始並不理解「共享引用」部分,但現在在ErlVolton的回覆中,我明白你的意思。 :) – Jolien 2014-10-09 14:42:07