在python中为每一行查找第一列的值为零

2024-10-06 09:12:27 发布

您现在位置:Python中文网/ 问答频道 /正文

学生ID和学生ID有各自的分数帧。在

我想找出学生被淘汰的阶段,即第一个零分出现在哪个阶段。然后更新相应的stage flag=1。下面是示例数据:

StuID | Stage1 | Stage2 | Stage3 | Stage4  | S1Flag |S2Flag |S3Flag | S4Flag
Ak    | 80.1   |  23.3  |    0   |    0    |   0    |  0    |  1    | 0 
XF    |   0    |  0     |    0   |    0    |   1    |  0    |  0    | 0
WE    |  23    |  34    |    43  |    34   |   0    |  0    |  0    | 0

对于上述数据,对于StuID='AK',第一个零出现在阶段3中,因此S3标志被更改为1。对于StuID='XF',第一个零出现在阶段1中,因此S1标志更新为1。其他几排也一样。在


Tags: 数据id示例标志stage阶段学生分数
1条回答
网友
1楼 · 发布于 2024-10-06 09:12:27

第一个^{}Stage列,按0比较,得到累积和,因此,如果compare by 1获取第一个0的掩码:

m = df.filter(like='Stage').eq(0).cumsum(axis=1).eq(1)
print (m)
   Stage1  Stage2  Stage3  Stage4
0   False   False    True   False
1    True   False   False   False
2   False   False   False   False

然后过滤Flag列并按^{}设置1

^{pr2}$

详细信息

^{3}$

相关问题 更多 >