0

我有一个看起来像这样的表:

+---------------+------+-----------+
| 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值。我可以通过将表格分解为字典列表并对其进行操作来做到这一点,但我被要求PETL仅使用它来执行此操作。

公式很简单:TSV = previousTSV * (1 + MTDReturn)

我已经调查过了aggregation,但没有什么可以将它们分组的。

也许我可以加入一个有一个列的表previousTSV

4

1 回答 1

0

这看起来很适合addfieldusingcontext。这将使用接收前一行的函数添加列值(第一行无)。我猜你会使用类似的东西:

def calculate_tsv(prv, cur, nxt):
    if prv is not None:
        return prv.TSV * (1 + cur.MTDReturn)

etl.addfieldusingcontext(table1, 'TSV', calculate_tsv)
于 2019-06-18T15:17:27.707 回答