You can do it using pandas.Grouper by grouping the Date and Identificator values within 24 hrs, and then picking last value for each Identificator within a group.
You can also specify a specific time from where to start the 24H groups by using the origin param. By default, it is set to "start_day", which is midnight (00:00:00). So to start the 24H intervals from say 3 PM, you can do it like:
df['Date'] = pd.to_datetime(df['Date'])
df.groupby([pd.Grouper(key='Date', freq='24H', origin='15:00:00'),'Identificator'], as_index=False).agg({'Date':'last', 'Status':'last'})
Now to only remove the rows with 'FAILED' status that later became 'OK' within 24 hrs, you can merge this grouped dataframe obtained above with the original, and then drop the rows where 'FAILED' status row was not present in the grouped dataframe.
So do it all as below:
df['Date'] = pd.to_datetime(df['Date'])
grouped_df = df.groupby([pd.Grouper(key='Date', freq='24H', origin='15:00:00'),'Identificator'], as_index=False).agg({'Date':'last', 'Status':'last'})
df = df.merge(grouped_df, on=['Identificator','Date'], suffixes=('','_grouped'), how="left")
df = df[~((df.Status=='FAILED') & (df.Status_grouped.isna()))].drop('Status_grouped', axis=1)
Output:
>>> df
Identificator Date Status
0 ID1 2021-05-02 19:55:43 OK
1 ID2 2021-05-02 19:48:01 FAILED
2 ID3 2021-05-02 19:47:53 OK
3 ID1 2021-05-03 19:55:43 OK
4 ID2 2021-05-03 20:48:01 OK
5 ID3 2021-05-03 19:47:53 OK
7 ID1 2021-05-04 20:55:43 OK
8 ID2 2021-05-04 19:48:01 OK
9 ID3 2021-05-04 19:47:53 OK