这个想法是用户将能够在特定条件下提取某一行。条件是返回最后一个' Pass'失败前遇到过。 例如,用户插入值5,if语句应打印出3.这是他最后一次通过。如果用户插入0,它也会返回3,因为这是他在失败前最后一次经过。
所以基本上这个想法是返回他失败前遇到的最后一次传球。 在同一数据集上的另一个例子,如果用户通过7,它将返回7.因为这是最后一次传递'在他失败之前。
---------------------------
#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:
答案 0 :(得分:1)
我认为需要创建查找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 :(得分:0)
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
答案 2 :(得分:0)
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