我有不同位置的數據按逗號分隔的文件中的日期和時間分隔。一種用於位置201682
樣本如下所示:從非常大的csv數據中有效創建詞典字典
Location Date Time Data
201682 3/15/2011 1:00:00 AM 10
201682 3/16/2011 1:00:00 AM 12
201682 3/15/2011 2:00:00 AM 32
201682 3/16/2011 2:00:00 AM 31
201682 3/15/2011 3:00:00 AM 21
201682 3/16/2011 3:00:00 AM 20
201682 3/15/2011 4:00:00 AM 45
201682 3/16/2011 4:00:00 AM 56
201682 3/15/2011 5:00:00 AM 211
201682 3/16/2011 5:00:00 AM 198
201682 3/15/2011 6:00:00 AM 512
201682 3/16/2011 6:00:00 AM 324
的文件I具有數以百萬計的數據線的運行。爲了處理數據,我試圖用Python創建一個字典對象。它本質上將該位置用作關鍵字,並將其餘數據存儲在列表中。這是在此我(徒勞的)嘗試:
import csv
headers = None
records = {}
reader=csv.reader(open(csvFile))
for row in reader:
if reader.line_num == 1:
headers = row[1:]
else:
records[row[0]] = dict(zip(headers, row[1:]))
print records['201682']
我得到的輸出如下所示:
{'Date':'3/16/2011', 'Time':'6:00:00 AM', 'Data':'324'}
我想要的數據看起來是這樣的:
{['Date':'3/15/2011', 'Time':'1:00:00 AM', 'Data':'10'],
['Date':'3/16/2011', 'Time':'1:00:00 AM', 'Data':'12'],
['Date':'3/15/2011', 'Time':'2:00:00 AM', 'Data':'32'],
['Date':'3/16/2011', 'Time':'2:00:00 AM', 'Data':'31'],
['Date':'3/15/2011', 'Time':'3:00:00 AM', 'Data':'21'],
['Date':'3/16/2011', 'Time':'3:00:00 AM', 'Data':'20'],
['Date':'3/15/2011', 'Time':'4:00:00 AM', 'Data':'45'],
['Date':'3/16/2011', 'Time':'4:00:00 AM', 'Data':'56'],
['Date':'3/15/2011', 'Time':'5:00:00 AM', 'Data':'211'],
['Date':'3/16/2011', 'Time':'5:00:00 AM', 'Data':'198'],
['Date':'3/15/2011', 'Time':'6:00:00 AM', 'Data':'512'],
['Date':'3/16/2011', 'Time':'6:00:00 AM', 'Data':'324']}
意圖是爲字典中的每個記錄存儲Date
,Time
和Data
信息。然後將所有數據包含在列表中的特定位置。最後,創建一個以位置爲關鍵字的列表字典。
我該如何獲得代碼來做到這一點?另外,有沒有更有效的方法來做到這一點?我擁有的數據文件接近24GB大小。 [在Python中是否有多線程的map-reduce方法 - 我對map reduce範例非常新穎...]。非常感謝!
我甚至不確定你的預期數據應該是什麼。你有一個奇怪的混合字典和列表語法在那裏是不合法的Python。 – mgilson 2013-05-10 00:16:59
@mgilson:意圖是創建一個數據對象,該數據對象使用該位置作爲關鍵字並標識該位置的所有記錄。所以這個關鍵字對於一個字典來說不是唯一的,而是一個字典列表。說得通? – sriramn 2013-05-10 00:25:50