Спасибо всем за ваши предложения. После небольшой борьбы мне удалось создать функцию, за которой я следовал. Размещаем решение, если оно кому-то помогает
##### Определить функцию, которая принимает входные данные (x), который может
содержать как числовые, так и категориальные столбцы ######
def fixuesliers (x):
##Get all the column name from the input dataframe x
xColumnNames=x.columns
print(xColumnNames)
#for j in df2ColumnNames:
for j in xColumnNames:
try:
print("colnames ",j)
xy=x[j]
mydata=pd.DataFrame()
#print(xy)
updated=[]
Q1,Q3=np.percentile(xy,[25,75])
IQR=Q3-Q1
minimum=Q1-1.5*IQR
maximum=Q3+1.5*IQR
for i in xy:
if(i>maximum):
print("Entering maxim")
i=maximum
updated.append(i)
elif(i<minimum):
print("enterinf minimum")
i=minimum
updated.append(i)
else:
updated.append(i)
x[j]=updated
except:
continue
return x