我有一个表,看起来像这样:
+---------------+------+-----------+
| 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列的表
发布于 2019-06-18 23:17:28
这看起来很适合addfieldusingcontext。这将使用接收前一行的函数添加列值(第一行为None)。我猜你可能会用到这样的东西:
def calculate_tsv(prv, cur, nxt):
if prv is not None:
return prv.TSV * (1 + cur.MTDReturn)
etl.addfieldusingcontext(table1, 'TSV', calculate_tsv)https://stackoverflow.com/questions/50860896
复制相似问题