Python获取数字序列中两列之间的最小值和最大值

Python获取数字序列中两列之间的最小值和最大值,python,pandas,Python,Pandas,我的数据框如下所示: id start end 1 101 102 1 102 104 1 104 110 1 125 128 2 100 102 2 102 104 2 110 115 我希望输出为: id start end 1 101 110 1 125 128 2 100 104 2 110 115 这里有一种方法: import numpy as np a

我的数据框如下所示:

id  start  end
1   101    102
1   102    104
1   104    110
1   125    128
2   100    102
2   102    104
2   110    115  
我希望输出为:

id  start  end
1   101    110
1   125    128
2   100    104
2   110    115  
这里有一种方法:

import numpy as np

a = df[['start', 'end']].values
# check which end is different to the start of the row bellow
m = (a[:-1] != a[1:,::-1]).all(1)
# array([False, False,  True,  True, False,  True])
# Take the cumsum and use it to group the df rows
g = np.cumsum(np.r_[False, m])
# array([0, 0, 0, 1, 2, 2, 3], dtype=int32)
# group the df and take the first an last sample accordingly
out = df.groupby(g).agg({'id':'first', 'start':'first', 'end':'last'})


为什么输出的顺序是这样的?我想从数据中删除不必要的序列,只对序列数据使用一行看起来像是
end
运行到
start
的max索引?你也可以添加你的代码吗?对不起,我没有任何代码来解决它。我正在寻找解决方法。请告诉我们有关您的问题的更多细节。为了获得所需的输出,您希望在初始集上执行哪些转换?你想自己做什么?谢谢!成功了。然而,它有一个小问题,就是在ID不同但结束时间和开始时间顺序一致的情况下失败了。因此,我也为ID添加了比较,结果很有效。
print(out)

   id  start  end
0   1    101  110
1   1    125  128
2   2    100  104
3   2    110  115