使用PETL

时间:2018-06-14 15:19:43

标签: python etl petl

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

+---------------+------+-----------+
| 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列的表格?

1 个答案:

答案 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)