在另一个变量等于 1 之前分配值 1,仅第一次

qwe*_*rty 0 python numpy pandas

我有这个数据框:

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
Run Code Online (Sandbox Code Playgroud)

我想分配一个值1before Ywas equal 1只有第一次。否则,0

“否则”意味着Y已经(或正在)相等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
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

国际大学联盟

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
Run Code Online (Sandbox Code Playgroud)