Guest User

Untitled

a guest
Nov 20th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. id_ val
  2. 11111 12
  3. 12003 22
  4. 88763 19
  5. 43721 77
  6. ...
  7.  
  8. diff = (val - diff_previousDay) * 0.4 + diff_previousDay
  9.  
  10. id_ val diff
  11. 11111 12 4.8
  12. 12003 22 11.68
  13. 88763 19 14.608
  14. 43721 77 ...
  15.  
  16. mul = 0.4
  17. 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)
  18.  
  19. df.loc[0, 'diff'] = df.loc[0, 'val'] * 0.4
  20.  
  21. for i in range(1, len(df)):
  22. df.loc[i, 'diff'] = (df.loc[i, 'val'] - df.loc[i-1, 'diff']) * 0.4 + df.loc[i-1, 'diff']
  23.  
  24. print (df)
  25. id_ val diff
  26. 0 11111 12 4.8000
  27. 1 12003 22 11.6800
  28. 2 88763 19 14.6080
  29. 3 43721 77 39.5648
  30.  
  31. from numba import jit
  32.  
  33. @jit(nopython=True)
  34. def foo(val):
  35. diff = np.zeros(val.shape)
  36. diff[0] = val[0] * 0.4
  37. for i in range(1, diff.shape[0]):
  38. diff[i] = (val[i] - diff[i-1]) * 0.4 + diff[i-1]
  39. return diff
  40.  
  41. df['diff'] = foo(df['val'].values)
  42.  
  43. print(df)
  44.  
  45. id_ val diff
  46. 0 11111 12 4.8000
  47. 1 12003 22 11.6800
  48. 2 88763 19 14.6080
  49. 3 43721 77 39.5648
Add Comment
Please, Sign In to add comment