我有一个有趣的案例。在 FID2 列中,我有一些值,基于每个我想创建的列表。 Ncircles 列确定列表。
例如:

  • 如果 0 中有一个值 Ncircles ,我想根据 FID2[i] 在同一行中的值创建一个列表,其中 i 等于 FID2
  • 如果 1 中有一个值 Ncircles ,我想创建一个基于FID2 中的值与 [i-1, i, i +1] 位于同一行,其中 i 等于 FID2
  • 如果 3 中有一个值 Ncircles ,我想创建一个基于FID2 中的值与 [i-3, i-2, i -1 i, i+1, i+2, i +3] 位于同一行,其中 i 等于 FID2

  • 这是 df 的示例:
              FID2  Ncircles
    0        50141         0
    1        56188         1
    2        75035         0
    3        94937         3
    

    最终列表可以写在同一个列表中。你对如何做到这一点有什么建议吗?

    预期的输出将是一个新列表:
    Newlist = [50141, 56187, 56188, 56188, 75035, 94934, 94935, 94936, 94937, 94938, 94939, 94940]
    

    最佳答案

    在列表理解中使用 range 进行展平:

    Newlist = [c for a, b in zip(df['FID2'], df['Ncircles']) for c in range(a-b, a+b+1)]
    print (Newlist)
    [50141, 56187, 56188, 56189, 75035, 94934, 94935, 94936, 94937, 94938, 94939, 94940]
    

    10-08 04:14