【发布时间】:2016-06-24 07:55:52
【问题描述】:
给这样一个数据框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: ("unsupported operand type(s) for -: 'float' and 'NoneType'", 'occured at index 1')
你知道如何解决这个问题吗?提前谢谢!
【问题讨论】:
-
您可以使用
itertuples或iterrows。
标签: python pandas recursion dataframe multiple-columns