Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- df['min'] = df.data[(df.data.shift(1) > df.data) & (df.data.shift(-1) > df.data)]
- df['max'] = df.data[(df.data.shift(1) < df.data) & (df.data.shift(-1) < df.data)]
- n = 3
- # Store all peaks in a series
- min_vals = df.data[(df.data.shift(1) > df.data) & (df.data.shift(-1) > df.data)]
- max_vals = df.data[(df.data.shift(1) < df.data) & (df.data.shift(-1) < df.data)]
- # Iterate over all values in my dataframe
- for idx, row in df.iterrows():
- # get all peaks that appeared before the current row (avoid look ahead)
- tmp_min = min_vals.loc[(idx >= min_vals.index)]
- tmp_max = max_vals.loc[(idx >= max_vals.index)]
- # Test if at least n mins and max peaks already appeared
- if len(tmp_min) >= n and len(tmp_max) >= n:
- #create counter for min values (needed to create column name)
- min_ctr = 0
- # iterate over last n entries in tmp_min by using tail function
- for x in tmp_min.tail(n):
- df.loc[idx, 'min_' + str(min_ctr)] = row.data
- min_ctr += 1
- max_ctr = 0
- for x in tmp_min.tail(n):
- df.loc[idx, 'max_' + str(max_ctr)] = row.data
- max_ctr += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement