我在逗号分隔的文件中有按日期和时间划分的不同位置的数据。位置示例201682
如下所示:
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
我为数百万行数据运行的文件。为了处理数据,我试图在 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 范式非常陌生......]。非常感谢帮助!