如何用np代替.在熊猫的一行浮点数的范围之外的Nan元素?



我有一个数据框架:

df = pd.DataFrame([0.05, 0.04, 0.08, 0.8, -0.4, 1.0, -1.0, 1.8, -0.5, -0.05])

我需要用np来替换。删除行中所有超出平均值+3std和平均值-3std限制的元素。换句话说,小于mean-3std的值和大于mean+3std的值应该用np.nan.

代替。我只是把我的数据框架的一列,但我实际上有11列,其中所有的值在特定的列范围之外必须由np.nan替换。

有简单的方法吗?我已经尝试使用lambda函数在哪里,但它不工作。

使用DataFrame.mask

mean = df.mean()
std = df.std()
outliers_mask = (df < mean - 3*std) | (df > mean + 3*std)
# replace outliers with NaN
df = df.mask(outliers_mask)

iuc

df = pd.DataFrame([0.05, 0.04, 0.08, 0.8, -0.4, 1.0, -1.0, 1.8, -0.5, -0.05])
condition_list = [(df[0] < df[0].quantile(.25)) | (df[0] > df[0].quantile(.75))]
choice_list = [np.nan]
df['0'] = np.select(condition_list, choice_list, df[0])
df

最新更新