问题如下:
我需要使用一个简单的功能(使用滚动窗口)检测数据中的“峰值”。用“真”或“假”检测峰。这部分完成了。
现在是我卡住的部分: 在一个峰的10行中,当有第二个(或第三,第四等)峰时,我需要通过取这些峰之间的最大值来将它们“组合”为一个峰,并返回该最大值的索引。 看到图片需要做什么。
因此,我想在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