我有不同位置的数据按逗号分隔的文件中的日期和时间分隔。一种用于位置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