Ну если у тебя одинаковых значений много, на приграничных значениях (low, upper) возможно ты все удаляешь такие значения.
Если тебе надо отфильтровать фрейм по возрасту (5 персентиль 95 персентиль). Используй что нибудь вроде такого.
low = df['Age'].quantile(0.05)
upper = df['Age'].quantile(0.95)
df[df['Age'].between(low, upper)]
Ну и не забудь про параметры метода quantile, например задать interpolation (интерполяцию). По у молчанию там линейная среднее между двумя значения, можешь например поставить 'nearest' и будет идентичное поведение
np.percentile()