Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- id_ val
- 11111 12
- 12003 22
- 88763 19
- 43721 77
- ...
- diff = (val - diff_previousDay) * 0.4 + diff_previousDay
- 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)
- df.loc[0, 'diff'] = df.loc[0, 'val'] * 0.4
- for i in range(1, len(df)):
- df.loc[i, 'diff'] = (df.loc[i, 'val'] - df.loc[i-1, 'diff']) * 0.4 + df.loc[i-1, 'diff']
- print (df)
- id_ val diff
- 0 11111 12 4.8000
- 1 12003 22 11.6800
- 2 88763 19 14.6080
- 3 43721 77 39.5648
- from numba import jit
- @jit(nopython=True)
- def foo(val):
- diff = np.zeros(val.shape)
- diff[0] = val[0] * 0.4
- for i in range(1, diff.shape[0]):
- diff[i] = (val[i] - diff[i-1]) * 0.4 + diff[i-1]
- return diff
- df['diff'] = foo(df['val'].values)
- print(df)
- id_ val diff
- 0 11111 12 4.8000
- 1 12003 22 11.6800
- 2 88763 19 14.6080
- 3 43721 77 39.5648
Add Comment
Please, Sign In to add comment