Mongodb与之前的条目不同

时间:2016-07-09 16:49:23

标签: python mongodb pymongo

我有一个包含以下内容的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的每条记录中的附加字段

1 个答案:

答案 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)方式处理行。