L'idée est que l'utilisateur sera en mesure d'extraire une certaine ligne sous une certaine condition. La condition est de retourner le dernier «Pass» rencontré avant l'échec. Par exemple, l'utilisateur insère la valeur 5, l'instruction if doit être imprimée 3. Comme c'est la dernière fois qu'il est passé. si l'utilisateur insérait 0, il retournerait également 3, car c'est la dernière fois qu'il passe avant d'échouer.

Donc, fondamentalement, l'idée est de retourner la dernière passe rencontrée avant son échec. Un autre exemple sur le même ensemble de données, si l'utilisateur passe 7, il retournerait 7. Comme c'est le dernier «passage» avant qu'il n'échoue.

---------------------------
#dataSet

Index Result
0      Pass
1      Pass
2      Pass
3      Pass
4      Fail
5      Fail
6      Pass
7      Pass
8      Fail

---------------------------

result = 'Result'
if df.loc[index_value,result] == 'Pass':

else:
1
user9238790 12 avril 2018 à 14:44

3 réponses

Meilleure réponse

Je pense qu'il faut créer une recherche Series:

a = df['Result'] == 'Pass'
m = a != a.shift(-1) & a

b = pd.Series(df.index.where(m)).ffill().bfill().astype(int)
print (b)
0    3
1    3
2    3
3    3
4    3
5    3
6    3
7    7
8    7
dtype: int32

val = 7
print(b.loc[val])
7
1
jezrael 12 avril 2018 à 12:40
last_pass=0 #set default last pass

result = 'Result'
if df.loc[index_value,result] == 'Pass':
    last_pass = index_value
    return index_value
else:
    return last_pass
0
hikaru89 12 avril 2018 à 12:26

IIUC:

In [125]: user_input = 7

In [126]: if (wd.iloc[user_input]['Result']=='Pass'):
     ...:     value = user_input
     ...:     print(value)
     ...: else:
     ...:     value = (wd[wd.Result=='Pass'].Index - user_input).abs().argmin()
     ...:     print(value)
     ...:     
6

In [124]: wd
Out[124]: 
   Index Result
0      0   Pass
1      1   Pass
2      2   Pass
3      3   Pass
4      4   Fail
5      5   Fail
6      6   Pass
7      7   Fail
0
shivsn 12 avril 2018 à 12:05