我有一个python数据框,其中有一些异常值。我想用数据的中值替换它们,那些值不存在。
id Age
10236 766105
11993 288
9337 205
38189 88
35555 82
39443 75
10762 74
33847 72
21194 70
39450 70
所以,我想替换所有值> 75具有剩余数据集的数据集的中值,即70,70,72,74,75
的中值。
我正在尝试执行以下操作:
但不知何故,以下代码无效
df['age'].replace(df.age>75,0,inplace=True)
答案 0 :(得分:10)
我认为这就是你要找的东西,你可以用loc来分配价值。然后你可以填补南
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)
答案 1 :(得分:0)
我最近尝试过的更通用的解决方案:将75替换为整列的中位数,然后采用类似于Bharath建议的解决方案:
median = float(df['Age'].median())
df["Age"] = np.where(df["Age"] > median, median, df['Age'])