使用:
df['Date'] = pd.to_datetime(df['Date'])
m1 = df['Fit_Test'].eq('Super_Fit').groupby([df['Name'],df['Price']]).transform('all')
m2 = df['Date'].notna().groupby([df['Name'],df['Price']]).transform('all')
m22 = df['Date'].eq(df.groupby(['Name', 'Price'])['Date'].transform('max'))
m3 = df.groupby(['Name', 'Price'])['Date'].transform('size').eq(2)
df = df[m1 | (m2 & m22) | (~m2 & m3) | (~m2 & m22)]
#it seems conditions should be simplify
#df = df[m1 | m22 | (~m2 & m3)]
print (df)
ID Name Price Date Fit_Test
0 1 Apple 10 2018-01-15 Super_Fit
1 2 Apple 10 2018-01-15 Super_Fit
2 3 Apple 10 2019-01-15 Super_Fit
6 7 Orange 12 2028-01-25 Not_Fit
7 8 Banana 15 2019-12-25 Medium_Fit
8 9 Banana 15 NaT Medium_Fit
9 10 Cherry 30 2021-06-23 Super_Fit
10 11 PineAp 30 2023-02-03 Medium_Fit