创建一个pandas列计数器,连续计数4行和6行

Create a pandas column counter that successively counts 4 lines and 6 lines

我有一个包含多列的 pandas 数据框,我想创建一个连续计数 4 行和 6 行的计数器。 我希望它看起来像下面的数据框:

指数 计数器
0 1
1 1
2 1
3 1
4 2
5 2
6 2
7 2
8 2
9 2
10 3
11 3
12 3
13 3

如您所见,counter 列中的前 4 个值为 1,接下来的 6 个值为 2,接下来的 4 个值为 3。

编辑后你的问题有点清楚了,你可以创建一个空列表和一个计数器变量,然后迭代行数范围,将它递增 10,即 (4+6),然后在每次迭代中,使用 counter 和 counter+1 创建长度为 4 和 6 的所需列表,将其添加到结果列表中。 最后从结果列表中取出第一个 df.shape[0] 值的切片(因为它可能比 df.shape[0] 多一些值),并将其分配给新列 df['counter' ].

result = []
counter = 1
for i in range(0, df.shape[0], 10):
    result += [counter]*4
    counter += 1
    result += [counter]*6
    counter += 1

df['counter'] = result[:df.shape[0]]
    
# result [1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4]

输出:

    index  counter
0       0        1
1       1        1
2       2        1
3       3        1
4       4        2
5       5        2
6       6        2
7       7        2
8       8        2
9       9        2
10     10        3
11     11        3
12     12        3
13     13        3