Ваше понимание верно.Он удаляет выбросы и заменяет их на NaN:
np.random.seed(0)
df = pd.DataFrame(np.random.normal(0,1,(100,10)))
idx = np.abs(df - df.mean()) <= (3*df.std())
outlier_locations = np.where(idx == False)
df1 = df[idx]
print(outlier_locations)
(array([58]), array([9]))
Если вы ожидаете, что df1 будет содержать меньше записей, чем df, то, возможно, вы захотите удалить строки или столбцы, содержащие выбросы, или просто удалитьзапись в строке, так что вы останетесь с рваными массивами.