首页 > 解决方案 > 如何使用 apply 函数删除具有 z 分数(3 或 -3)的异常值

问题描述

我正在研究 UCI 心脏病,并将所有可测量值更改为 z 分数,我想将大于 3 或小于 -3 的值分别替换为 3 和 3 或平均值。

我的示例代码是:

> import pandas as pd import numpy as np
> 
> df= pd.DataFrame({'X': np.random.randn(10),
>                   'Y': np.random.randn(10)})
> 
> df=df.append(pd.DataFrame({'X':np.array([3,-3,3.3,4]),
>                                     'Y':np.array([-3.4,2,1,5])}),ignore_index=True)
> 
> df['X'].apply(lambda x: x=3 if x>3 else (x = -3 if x<-3 else x))

但我收到以下错误:

File "<ipython-input-144-8d678556d1e7>", line 1
    df['X'].apply(lambda x: x=3 if x>3 else (x= -3 if x<-3 else x))
                                              ^
SyntaxError: invalid syntax

我该如何解决?

标签: python-3.xpandasdata-cleaning

解决方案


lambda语法是这样的,在 之后,x:您只需声明函数值,而不重复x(本例中的条件除外)。

df['X'].apply(lambda x: 3 if x > 3 else (-3 if x < -3 else x))

推荐阅读