Проблема заключается в следующем:
Мне нужно с помощью простой функции обнаружить «пики» в моих данных (с помощью скользящего окна). Пики обнаруживаются с True или False. Эта часть сделана.
Теперь приходит часть, где я застрял:
В пределах 10 рядов пика, когда есть второй (или третий, четвертый и т. Д.) Пик, мне нужно «объединить» их в один пик, взяв максимальное значение между этими пиками, а также вернуть индекс этого максимального значения ,
Посмотрите на картинку, что для этого нужно.
Следовательно, я хотел бы найти самый высокий пик, когда имеется более 1 пика в диапазоне 10 индексов (равно 2,5 метра, поскольку каждый ряд находится на расстоянии 25 сантиметров от следующего ряда).
Я пробовал что-то подобное, что не делает то, что мне нужно.
def merge_peaks(df):
return df.assign(
multiple_peaks = lambda df: df['heightdiff_peak'].rolling(window=10, min_periods=1).sum(),
highest_peak = lambda df: df[df['multiple_peaks']>1]['abs_diff_height'].rolling(window=10, min_periods=1).max()
)
Location abs_diff_height mean_height_diff std_height_diff heightdiff_peak multiple_peaks highest_peak highest_peak_center
572 82.75 7.900000 2.0226 2.114609 True 1.0 NaN NaN
573 83.00 7.900000 2.0444 2.159749 True 2.0 7.900000 7.900000
823 145.50 14.900000 3.7790 4.703665 True 1.0 NaN NaN
824 145.75 14.900000 3.7710 4.700043 True 2.0 14.900000 17.800000
825 146.00 15.900000 3.7692 4.700165 True 3.0 15.900000 17.800000
826 146.25 16.900000 3.7674 4.699520 True 4.0 16.900000 17.800000
827 146.50 17.800000 3.7694 4.699832 True 5.0 17.800000 17.800000
828 146.75 17.800000 3.7734 4.700880 True 6.0 17.800000 17.800000
829 147.00 17.800000 3.7774 4.701071 True 7.0 17.800000 17.800000
830 147.25 17.800000 3.7834 4.699433 True 8.0 17.800000 17.800000
[1]: https://i.stack.imgur.com/l0uF5.jpg