小编Ric*_*ieV的帖子

识别列表中的所有重叠元组

我目前有一个元组列表(尽管我控制列表和元组的创建,因此可以根据需要更改它们的类型)。每个元组都有一个开始和结束整数以及一个带有该范围源 ID 的字符串。我想要做的是识别元组中的所有重叠范围。

目前我有

a = [(0, 98, '122:R'), 
     (100, 210, '124:R'),
     (180, 398, '125:R'),
     (200, 298, '123:R')]
highNum = 0
highNumItem = ''
for item in a:
    if item[0] < highNum:
        print(highNumItem + ' overlaps ' + item[2])
        if item[1] > highNum:
            highNum = item[1]
            highNumItem = item[2]

    
# 124:R overlaps 125:R
# 125:R overlaps 123:R
Run Code Online (Sandbox Code Playgroud)

输出足够的重叠信息应该能够手动查看和修复。但是,它错过了识别某些重叠集。我不禁想到有一个相对明显的解决方案,我只是缺少或没有使用正确的搜索词来查找示例。但理想情况下,我希望输出实际上是

124:R overlaps 125:R & 123:R
125:R overlaps 123:R
Run Code Online (Sandbox Code Playgroud)

但是使用我的比较方法,我无法找到一种方法来捕捉重叠跨越超过 2 个相邻范围的罕见实例。如果有人能指出适合于此的函数或比较方法,我将不胜感激。

另外,如果重要的话,我目前坚持使用 python 2.7,但需要能够在 3rd 方应用程序允许的情况下将解决方案移植到 3.x。

python

5
推荐指数
1
解决办法
395
查看次数

将锯齿状数组转换为 Pandas 数据框

我正在尝试获得一个看起来像这样的锯齿状 2D 列表

l = [
    [(1, 0.8656769), (2, 0.08902887), (5, 0.040293545)],
    [(1, 0.5918752), (2, 0.04440181), (4, 0.05204634), (5, 0.3066661)],
    [(1, 0.26327166), (2, 0.26078925), (4, 0.24160784), (5, 0.22958432)],
    [(2, 0.92498404), (5, 0.065140516)],
    [(1, 0.9882947)],
    [(0, 0.23412614), (1, 0.031903207), (2, 0.03044448), (3, 0.6480669), (4, 0.053342175)],
    [(0, 0.056099385), (3, 0.9084766), (5, 0.031809118)],
    [(2, 0.39833495), (4, 0.52058107), (5, 0.077259734)],
    [(0, 0.46812743), (1, 0.10643007), (3, 0.15962379), (4, 0.017917762), (5, 0.24552101)],
    [(0, 0.2556301), (1, 0.7391994)]
]
Run Code Online (Sandbox Code Playgroud)

变成一个如下所示的数据框:

在此处输入图片说明

在 中l,每一行可能包含也可能不包含所有列。每个元组的结构如下(column_label, cell_value)。如果该行缺少一列,则其值应在数据框中设置为 0。 …

python jagged-arrays pandas

3
推荐指数
1
解决办法
316
查看次数

标签 统计

python ×2

jagged-arrays ×1

pandas ×1