计算重叠的最小值 window

Calculate minimum of overlapping window

我在思考解决问题的方法时遇到了困难。我有一个如下所示的数据框:

这些是重叠的值 windows。我的挑战是计算合并(?)windows 时的最小值。它应该看起来像:

我有点不知所措,有人有什么建议吗?

假设您要定义不与最小值重叠的 windows 如果新的 window 是两个旧的 windows 的交集,我们需要通过做两件事来解决这个问题。

  • 首先我们需要定义windows。我假设如果我们得到所有的起点和终点,我们就可以做到这一点,因为 windows 不必大小相等,只是不要彼此重叠。

    my_list = np.sort(list(set(np.concatenate([df['Start'].values,df['End'].values]))))

    然后我们从这个列表构建一个新的数据框:

    new_df = pd.DataFrame({'Start':my_list[:-1],'End':my_list[1:]})

  • 然后我们找到最小值:

    new_df['value'] = new_df.apply(lambda x: min(df[(df['Start'] <= x[0]) & (df['End'] >= x[1])]['Value']), axis = 1)

输出

          Start End value
       0    0   5   0.1
       1    5   10  0.1
       2    10  15  0.2
       3    15  20  0.2
       4    20  25  0.4
       5    25  30  0.3
       6    30  35  0.3

如果您需要更详细地解释每个 line/function 正在做什么,请随时询问更多详细信息,我会更新答案。