我有一个看起来像这样的表:
+---------------+------+-----------+
| EffectiveDate | TSV | MTDReturn |
+===============+======+===========+
| '1994-01-30' | 100 | 0.04 |
+---------------+------+-----------+
| '1995-02-28' | None | 0.02 |
+---------------+------+-----------+
| '1992-03-31' | None | 0.01 |
+---------------+------+-----------+
| '1974-08-30' | None | 0.06 |
+---------------+------+-----------+
我正在使用PETL
库来尝试填充TSV
值。我可以通过将表格分解为一个dicts列表并对其进行操作来实现此目的,但我被要求仅使用PETL
进行此操作。
公式很简单:TSV = previousTSV * (1 + MTDReturn)
我已经调查了aggregation
,但没有什么可以将它们分组。
也许我可以加入一个包含previousTSV
列的表格?
答案 0 :(得分:0)
这看起来很适合addfieldusingcontext。这将使用接收上一行的功能添加列值(第一行无)。我猜你会用类似的东西:
def calculate_tsv(prv, cur, nxt):
if prv is None:
return None
else:
return prv.TSV * (1 + cur.MTDReturn)
etl.addfieldusingcontext(table1, 'TSV', calculate_tsv)