Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. df['min'] = df.data[(df.data.shift(1) > df.data) & (df.data.shift(-1) > df.data)]
  2. df['max'] = df.data[(df.data.shift(1) < df.data) & (df.data.shift(-1) < df.data)]
  3.  
  4. n = 3
  5. # Store all peaks in a series
  6. min_vals = df.data[(df.data.shift(1) > df.data) & (df.data.shift(-1) > df.data)]
  7. max_vals = df.data[(df.data.shift(1) < df.data) & (df.data.shift(-1) < df.data)]
  8.  
  9. # Iterate over all values in my dataframe
  10. for idx, row in df.iterrows():
  11.  
  12. # get all peaks that appeared before the current row (avoid look ahead)
  13. tmp_min = min_vals.loc[(idx >= min_vals.index)]
  14. tmp_max = max_vals.loc[(idx >= max_vals.index)]
  15.  
  16. # Test if at least n mins and max peaks already appeared
  17. if len(tmp_min) >= n and len(tmp_max) >= n:
  18.  
  19. #create counter for min values (needed to create column name)
  20. min_ctr = 0
  21.  
  22. # iterate over last n entries in tmp_min by using tail function
  23. for x in tmp_min.tail(n):
  24. df.loc[idx, 'min_' + str(min_ctr)] = row.data
  25. min_ctr += 1
  26.  
  27. max_ctr = 0
  28. for x in tmp_min.tail(n):
  29. df.loc[idx, 'max_' + str(max_ctr)] = row.data
  30. max_ctr += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement