簡體   English   中英

在python中為第一行找到零值的第一列

[英]Finding the the first column with zero value for each row in python

我有一個具有學生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。 並且對其他行也執行o。

Stage一個filter Stage列,用0比較,獲取累積和,所以如果用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列並通過mask設置1

cols = df.filter(like='Flag').columns
df[cols] = df[cols].mask(m.values, 1)
print (df)
  StuID  Stage1  Stage2  Stage3  Stage4  S1Flag  S2Flag  S3Flag  S4Flag
0    Ak    80.1    23.3       0       0       0       0       1       0
1    XF     0.0     0.0       0       0       1       0       0       0
2    WE    23.0    34.0      43      34       0       0       0       0 

詳細資料

  print (df.filter(like='Stage'))
   Stage1  Stage2  Stage3  Stage4
0    80.1    23.3       0       0
1     0.0     0.0       0       0
2    23.0    34.0      43      34

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

print (df.filter(like='Stage').eq(0).cumsum(1))
   Stage1  Stage2  Stage3  Stage4
0       0       0       1       2
1       1       2       3       4
2       0       0       0       0

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM