我有一个带有“范围”列和一些值列的数据框:
In [1]: df = pd.DataFrame({
"range": [[1,2], [[1,2], [6,11]], [4,5], [[1,3], [5,7], [9, 11]], [9,10], [[5,6], [9,11]]],
"A": range(1, 7),
"B": range(6, 0, -1)
})
Out[1]:
range A B
0 [1, 2] 1 6
1 [[1, 2], [6, 11]] 2 5
2 [4, 5] 3 4
3 [[1, 3], [5, 7], [9, 11]] 4 3
4 [9, 10] 5 2
5 [[5, 6], [9, 11]] 6 1
对于每一行,我需要检查范围是否完全包含在另一行的范围内(包括其所有部分),然后将其他列(A和B)加起来,以保持更长的范围。这些行是任意排序的。
示例数据帧的详细步骤如下:第1行和第3行完全包含第0行,第1行,第2和第3行没有其他行完全包含其范围,而第4行包含在第1行中3和5,但由于第5行也包含在3行中,因此第4行仅应合并一次。
因此,我的输出数据框将是:
Out[2]:
range A B
0 [[1, 2], [6, 11]] 8 13
1 [4, 5] 3 4
2 [[1, 3], [5, 7], [9, 11]] 16 12
我考虑过先对行进行排序,以便将最长的范围放在顶部,这样合并范围会更容易,更有效,但不幸的是,我不知道如何在熊猫中执行此操作... >