我有一个包含以下内容的mongodb集合:
[{'price': 0.74881,,
'date': '20160601 00:00:00.134',
'instrument': 'EUR/GBP'},
{'price': 0.76881,
'date': '20160601 00:00:00.135',
'instrument': 'EUR/GBP'},
{'price': 0.78881,
'date': '20160601 00:00:00.300',
'instrument': 'EUR/GBP'},
{'price': 1.76881,
'date': '20160601 00:00:00.302',
'instrument': 'EUR/GBP'},
如何更新每条记录,使其包含出价增加/减少百分比并询问之前的记录?真实记录包含数百万条记录,因此大熊猫不合适。
在输出中,每条记录应包含一个名为price_change_to_pervious_item的每条记录中的附加字段
答案 0 :(得分:1)
您似乎希望以成对方式处理记录。 此功能来自itertools documentation本身。
from itertools import tee, izip
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
next(b, None)
return izip(a, b)
一旦你有了,并假设你的数据已经分类
results = []
for d1, d2 in pairwise(data):
if not result:
d1['price_change_to_pervious_item'] = 0.0
results.append(d1)
delta = d2['price'] - d1['price']
d2['price_change_to_pervious_item'] = delta
results.append(d2)
这没有经过测试,但你得到了一般的想法。 Pairwise允许您以(d1,d2),(d2,d3)方式处理行。