2017-07-29 149 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