2017-07-29 150 views
2

我有一个Python数据框,其中有一些异常值。我想用数据的中间值替换它们,如果这些值不在那里。Python:用中间值替换异常值

id   Age 
10236 766105 
11993  288 
9337  205 
38189  88 
35555  82 
39443  75 
10762  74 
33847  72 
21194  70 
39450  70 

所以,我想用剩下的数据集,即,70,70,72,74,75中值的数据集的中值,以取代所有的值> 75。

我试图做到以下几点:

  1. 替换为0,所有大于75
  2. 值替换中间值的0。

但不知何故,下面的代码无法正常工作

df['age'].replace(df.age>75,0,inplace=True) 

回答

4

我认为这是你在找什么,你可以用禄来分配值。然后你就可以填补南

median = df.loc[df['Age']<75, 'Age'].median() 
df.loc[df.Age > 75, 'Age'] = np.nan 
df.fillna(median,inplace=True) 

您还可以使用np.where在一行

df["Age"] = np.where(df["Age"] >75, median,df['Age']) 

您还可以使用.mask即

df["Age"] = df["Age"].mask(df["Age"] >75, median) 
+0

改变'年龄> 75' 。 +1 –

+0

谢谢@EkabaBisong更新了代码。 – Dark

+0

谢谢,这就像一个魅力 – user4943236