在滚动窗口中出现两个或多个值时查找最大值

时间:2019-06-26 13:23:01

标签: python pandas data-cleaning

问题如下:

我需要使用一个简单的功能(使用滚动窗口)检测数据中的“峰值”。用“真”或“假”检测峰。这部分完成了。

现在是我卡住的部分: 在一个峰的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

0 个答案:

没有答案