计算重叠的最小值 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 正在做什么,请随时询问更多详细信息,我会更新答案。
我在思考解决问题的方法时遇到了困难。我有一个如下所示的数据框:
这些是重叠的值 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 正在做什么,请随时询问更多详细信息,我会更新答案。