给出这样的数据框 df
:
id_ val
11111 12
12003 22
88763 19
43721 77
...
我希望向df中添加一列diff,每行的值等于该行中的val减去前一行中的diff并乘以0.4再加上前一天的diff。
diff = (val - diff_previousDay) * 0.4 + diff_previousDay
第一行中的diff
等于该行中的val * 4
。也就是说,预期的df
应该是:
id_ val diff
11111 12 4.8
12003 22 11.68
88763 19 14.608
43721 77 ...
我尝试过:
mul = 0.4
df['diff'] = df.apply(lambda row: (row['val'] - df.loc[row.name, 'diff']) * mul + df.loc[row.name, 'diff'] if int(row.name) > 0 else row['val'] * mul, axis=1)
但是遇到了如下错误:
TypeError: ("不支持 float 和 NoneType 的减法操作", '发生在索引 1 处')
您知道如何解决这个问题吗?谢谢!
itertuples
或iterrows
。 - IanS