如何在panda中创建一个列表或列,该列中的数字以1的步长递增,当它达到某个数字(比如5(时,它会返回1并重复此过程?我的脚本如下,它不会像预期的那样工作:
i = 0
lista = []
for i in range(50):
i += 1
if i == 5:
continue
lista.append(i)
print(i)
# what I wanted from this code is like :
1
2
3
4
5
.
.
.
# repeat printing 1-5 for 10 times
首先在panda中使用循环是反模式的,主要是在存在矢量化解决方案的情况下,这里是numpy.tile
:
df = pd.DataFrame({'col': np.tile(np.arange(1, 6), 10)})
print (df.head(12))
col
0 1
1 2
2 3
3 4
4 5
5 1
6 2
7 3
8 4
9 5
10 1
11 2
我想到的最简单的方法是:
lista = []
for i in range(50):
lista.append(i%5+1)
print(lista)
这也可以写成列表理解,这只是一行代码,而且更酷;(
lista = [ i%5+1 for i in range(50) ]