首页 > 解决方案 > 如何基于一列计算和应用 z 分数,并将其应用于 Pyhton 中的同一列?

问题描述

我有一个包含 5 列的熊猫数据框:X、YZ、Value1、Value2。

我想根据列值 1 计算 Z 分数,然后应用它。我不知道如何正确地做到这一点。我都试过了

from scipy import stats
z_score = np.abs(stats.zscore(df["Value1"]))
df["Value1"] = df["Value1"][(z_score < 3).all(axis=1)]

from scipy.stats import zscore
df["Value1"].apply(zscore)

但非似乎工作正常。不知道该怎么做,因为我要么键入

KeyError: False 或 IndexError: 元组索引超出范围。

标签: pythonpandasscipy

解决方案


只需分配一个名为“z_score”的列并将其用于过滤。

df['z_score'] = np.abs(stats.zscore(df["Value1"]))
df.query('z_score > 3', inplace=True)  # If filter all DF.
df['Value1'] = df['Value1'].mask(df['z_score'] > 3)  # If filter by masking.

推荐阅读