获取当前行及以上行的列中某个值的出现次数

Get occurences of a value in column for current row and above

我有一项我通常在 excel 中完成的任务,但不知道如何以巧妙的方式转换为 Python。 我有一个大约 700 行和 30 列的数据框,尽管只有一列与此问题相关:

Column X
---------
A          1
A          1
A          1
A          1
A          1
A          1
A          1
A          1
A          1
A          1
A          1
A          0
A          0
A          0
A          0
A          0
B          1
B          1
B          1
B          1
B          1
B          1
B          1
B          1
B          1
B          1
B          1
B          0
B          0
B          0
C          1
C          1

我需要为 X 列中任何内容的前 11 次出现创建一个值为 1 的新列,因此“A”的前 11 行的值为 1,其余行的值为 0。 所以我想我可以创建一个列来计算 df.at[idx, "Column X"] 的出现次数,但仅限于当前行和上面的行。 一旦我有了这个,我可以创建另一列,如果新创建的列的值为 11 或更低,则写入 1,否则 returns 0.

注意:数据始终按 X 排序,因此将遵循上面显示的模式。

有什么建议可以做到这一点吗?

使用 GroupBy.cumcount for counter starting by 0, so for first 11 values compare by Series.lt 不太像 11 并将输出转换为整数以实现 Tru/False1,0 的映射:

df['new'] = df.groupby('Column X').cumcount().lt(11).astype(int)
print (df)
   Column X  new
0         A    1
1         A    1
2         A    1
3         A    1
4         A    1
5         A    1
6         A    1
7         A    1
8         A    1
9         A    1
10        A    1
11        A    0
12        A    0
13        A    0
14        A    0
15        A    0
16        B    1
17        B    1
18        B    1
19        B    1
20        B    1
21        B    1
22        B    1
23        B    1
24        B    1
25        B    1
26        B    1
27        B    0
28        B    0
29        B    0
30        C    1
31        C    1