擅长:python、mysql、java
<p>谢谢大家的建议。经过一点努力,我成功地创建了我所追求的函数。张贴解决方案,如果它有助于某人</p>
<p>定义一个接受输入数据帧(x)的函数
包含数字列和分类列</p>
<p>def fixoutliers(x):</p>
<pre><code>##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
</code></pre>