我有一个有趣的案例。在 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]