【发布时间】:2019-12-10 23:44:46
【问题描述】:
具有以下形式的数据框:
df = pd.DataFrame({
'A': ('foo', 'foo', 'foo', 'foo', 'foo'),
'start': (3039, 3536, 9140, 12976, 14982),
'end': (3536, 4879, 44331, 13641, 15643)
})
A start end
0 foo 3039 3536
1 foo 3536 4879
2 foo 9140 44331
3 foo 12976 13641
4 foo 14982 15643
如何删除由start 和end 列确定的“范围”与其他行重叠的所有行?在上面的示例中,索引为3 和4 的行将被删除,因为它们包含在行索引2 中。
我尝试从shift() 开始尝试创建一个掩码系列,但除了因为所有值都是False 而无法工作之外,它只会与前一行进行比较,而我想比较所有行的范围。
ranges_mask = ((df['start'] > df['start'].shift(-1)) & (df['end'] < df['end'].shift(-1)))
【问题讨论】:
-
如果例如 end of 3 大于 end of 2 我们应该怎么做?