Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 熊猫:如何通过范围包含进行聚合?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 熊猫:如何通过范围包含进行聚合?

Python 3.x 熊猫:如何通过范围包含进行聚合?,python-3.x,pandas,Python 3.x,Pandas,我有一个带有“范围”列和一些值列的数据框: 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]:

我有一个带有“范围”列和一些值列的数据框:

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)相加,保持较长的范围。这些行是按任意顺序排列的

示例数据帧的详细步骤如下所示:第0行完全包含在第1行和第3行中,第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

我考虑先对行进行排序,以便将最长的范围放在顶部,这样合并范围会更容易、更有效,但不幸的是,我不知道如何在pandas中执行此操作…

我了解合并逻辑,但新的A和B列值似乎不清楚。输出数据帧的第0行是输入数据帧的第0、1和4行的总和。因此,行1是输入行2的结果。第2行是0、3、4和5的结果。