Без использования Numpy и самым простым способом:
import pandas as pd
data = [[10254,'AAA',4.40,46.67],
[10255,'BBB',4.50,50.00],
[10255,'BBB',4.50,50.00],
[10254,'AAA',4.45,48.33],
[10254,'AAA',4.50,50.00],
[10254,'AAA',1.50,10.00],]
dataframe = pd.DataFrame(data, columns=['PROCESS_NO','PROCESS NAME','RESULT_2','RESULT_3'])
dataframe['CHECK_2'] = 'FALSE'
dataframe['CHECK_3'] = 'FALSE'
check2_position = dataframe.columns.get_loc('CHECK_2')
check3_position = dataframe.columns.get_loc('CHECK_3')
for i in range(0,len(dataframe)):
if i >= 3 :
current_result2 = dataframe.iloc[i]['RESULT_2'];
if(current_result2 >= dataframe.iloc[i-1]['RESULT_2'] or
current_result2 >= dataframe.iloc[i-2]['RESULT_2'] or
current_result2 >= dataframe.iloc[i-3]['RESULT_2'] ):
dataframe.iat[i,check2_position] = 'TRUE'
current_result3 = dataframe.iloc[i]['RESULT_3'];
if(current_result3 >= dataframe.iloc[i-1]['RESULT_3'] or
current_result3 >= dataframe.iloc[i-2]['RESULT_3'] or
current_result3 >= dataframe.iloc[i-3]['RESULT_3'] ):
dataframe.iat[i,check3_position] = 'TRUE'
print(dataframe)
результат будет таким, как вы хотите:
PROCESS_NO PROCESS NAME RESULT_2 RESULT_3 CHECK_2 CHECK_3
0 10254 AAA 4.40 46.67 FALSE FALSE
1 10255 BBB 4.50 50.00 FALSE FALSE
2 10255 BBB 4.50 50.00 FALSE FALSE
3 10254 AAA 4.45 48.33 TRUE TRUE
4 10254 AAA 4.50 50.00 TRUE TRUE
5 10254 AAA 1.50 10.00 FALSE FALSE
Я надеюсь, что это может помочь вам.
Приветствия.