Python:用中值替换异常值

use*_*236 7 python numpy pandas

我有一个python数据框,其中有一些异常值.我想用数据的中值替换它们,那些值不存在.

id         Age
10236    766105
11993       288
9337        205
38189        88
35555        82
39443        75
10762        74
33847        72
21194        70
39450        70
Run Code Online (Sandbox Code Playgroud)

所以,我想用剩余数据集的数据集的中值替换所有> 75的值,即中值70,70,72,74,75.

我正在尝试执行以下操作:

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

但不知何故,下面的代码不起作用

df['age'].replace(df.age>75,0,inplace=True)
Run Code Online (Sandbox Code Playgroud)

Flo*_*oor 14

我认为这就是你要找的东西,你可以使用loc来赋值.然后你可以填补南

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

您也可以在一行中使用np.where

df["Age"] = np.where(df["Age"] >75, median,df['Age'])
Run Code Online (Sandbox Code Playgroud)

你也可以使用.mask ie

df["Age"] = df["Age"].mask(df["Age"] >75, median)
Run Code Online (Sandbox Code Playgroud)

  • 更改为“年龄 &gt; 75”。+1 (2认同)