获取当前行及以上行的列中某个值的出现次数
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/False
到 1,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
我有一项我通常在 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/False
到 1,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