创建一个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
我有一个包含多列的 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