您可以构造sqlite
数据库表并查询它们以获取所需结果。
import sqlite3, operator
reference = [[1, 0, 0], [2, 0, 10], [3, 0, 20], [4, 0, 30], [5, 0, 40]]
temperature = [[0, 0, 100], [0, 10, 110], [0, 20, 120], [0, 30, 130], [0, 40, 140]]
一对帮助者 - 我喜欢使用它们,因为它使后续的代码可读。
reference_coord = operator.itemgetter(1,2)
ref = operator.itemgetter(0)
temperature_coord = operator.itemgetter(0,1)
temp = operator.itemgetter(2)
创建一个数据库(在内存中)
con = sqlite3.connect(":memory:")
两种方法可以解决这个,保存在单独的表中的所有信息,或者建立一个单一的表,只有数据你想
每个清单一张表
con.execute("create table reference(coordinate TEXT PRIMARY KEY, reference INTEGER)")
con.execute("create table temperature(coordinate TEXT PRIMARY KEY, temperature INTEGER)")
# fill the tables
parameters = [(str(reference_coord(item)), ref(item)) for item in reference]
con.executemany("INSERT INTO reference(coordinate, reference) VALUES (?, ?)", parameters)
parameters = [(str(temperature_coord(item)), temp(item)) for item in temperature]
con.executemany("INSERT INTO temperature(coordinate, temperature) VALUES (?, ?)", parameters)
查询的数据的两个表需要
cursor = con.execute('SELECT reference.reference, temperature.temperature FROM reference, temperature WHERE reference.coordinate = temperature.coordinate')
print(cursor.fetchall())
表,结合了数据在两个名单
con.execute("create table data(coordinate TEXT PRIMARY KEY, reference INTEGER, temperature INTEGER)")
建设只用数据你所关心的表约
parameters = [(str(reference_coord(item)), ref(item)) for item in reference]
con.executemany("INSERT INTO data(coordinate, reference) VALUES (?, ?)", parameters)
parameters = [(temp(item), str(temperature_coord(item))) for item in temperature]
con.executemany("UPDATE data SET temperature=? WHERE coordinate=?", parameters)
简单的查询,因为表只有你想要的
cursor2 = con.execute('SELECT reference, temperature FROM data')
print(cursor2.fetchall())
con.close()
结果:
>>>
[(1, 100), (2, 110), (3, 120), (4, 130), (5, 140)]
[(1, 100), (2, 110), (3, 120), (4, 130), (5, 140)]
>>>
一旦你的数据到数据库中是相当容易从中提取信息,如果一个文件DB来代替一个数据库的数据库可以持久记忆。
如果外部库可以接受,pandas具有类似的功能,是一个很棒的软件包。
定义“大量数据” - 您是否需要多台机器?或者只是寻找在单台机器上运行的相对高效的解决方案?换句话说,它是否是大数据问题? – amit 2015-02-08 10:51:40
这可以通过嵌套for循环来完成。你还可以分享你迄今为止所尝试过的吗? – 2015-02-08 10:55:07