本文介绍了仅在第一次时,在另一个变量等于1之前分配值1的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个数据框:
ID X1 X2 Y
A 11 47 0
A 11 87 0
A 56 33 0
A 92 72 1
A 83 34 0
A 34 31 0
B 88 62 1
B 28 71 0
B 95 28 0
B 92 87 1
B 91 45 0
C 46 59 0
C 60 68 1
C 67 78 0
C 26 26 0
C 13 77 0
D 40 95 0
D 25 26 1
D 93 31 0
D 71 67 0
D 91 24 1
D 80 19 0
D 44 49 0
D 41 84 1
E 38 10 0
F 23 75 1
G 46 58 1
G 44 52 0
我想在Y
等于1
,第一次之前分配一个1
值.否则,0
.
I want to assign a value of 1
before Y
was equal 1
, for the first time only. Otherwise, 0
.
否则"表示Y
已经(或等于)1
.
"Otherwise" means Y
was already (or is) equal 1
.
- 注意:应分别对每个
ID
应用.
预期结果:
ID X1 X2 Y before
A 11 47 0 1
A 11 87 0 1
A 56 33 0 1
A 92 72 1 0
A 83 34 0 0
A 34 31 0 0
B 88 62 1 0
B 28 71 0 0
B 95 28 0 0
B 92 87 1 0
B 91 45 0 0
C 46 59 0 1
C 60 68 1 0
C 67 78 0 0
C 26 26 0 0
C 13 77 0 0
D 40 95 0 1
D 25 26 1 0
D 93 31 0 0
D 71 67 0 0
D 91 24 1 0
D 80 19 0 0
D 44 49 0 0
D 41 84 1 0
E 38 10 0 1
F 23 75 1 0
G 46 58 1 0
G 44 52 0 0
推荐答案
IIUC
df['New']=df.groupby('ID').Y.cumsum().eq(0).astype(int)
df
ID X1 X2 Y New
0 A 11 47 0 1
1 A 11 87 0 1
2 A 56 33 0 1
3 A 92 72 1 0
4 A 83 34 0 0
5 A 34 31 0 0
6 B 88 62 1 0
7 B 28 71 0 0
8 B 95 28 0 0
9 B 92 87 1 0
10 B 91 45 0 0
11 C 46 59 0 1
12 C 60 68 1 0
13 C 67 78 0 0
14 C 26 26 0 0
15 C 13 77 0 0
16 D 40 95 0 1
17 D 25 26 1 0
18 D 93 31 0 0
19 D 71 67 0 0
20 D 91 24 1 0
21 D 80 19 0 0
22 D 44 49 0 0
23 D 41 84 1 0
24 E 38 10 0 1
25 F 23 75 1 0
26 G 46 58 1 0
27 G 44 52 0 0
这篇关于仅在第一次时,在另一个变量等于1之前分配值1的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!