首页 > 解决方案 > 使用以前的行进行迭代

问题描述

如何使用迭代类型的规则创建 col2?

col2 = col1 + 0.1(col2's previous value). If there is no previous value (here in 20 Dec 2019), then col2 should equal col1

df
  date      col1   
2019-12-20   10      
2019-12-27   3       
2020-01-03   7

预期产出

  date      col1  col2  
2019-12-20   10     10   (no previous value, so equal col1)
2019-12-27   3      4    (3+0.1*10)
2020-01-03   7      7.4  (7+0.1*4)

标签: pythonpython-3.xpandas

解决方案


使用np.cumsum (受@MustafaAydın 公式的启发)

p = 0.1 ** np.arange(len(df)-1, -1, -1)
df['col2'] = np.cumsum(p * df['col1']) / p
>>> df
         date  col1  col2
0  2019-12-20    10  10.0
1  2019-12-27     3   4.0
2  2020-01-03     7   7.4

推荐阅读