【发布时间】:2019-11-13 23:59:12
【问题描述】:
我正在尝试从 Python 数据框中的特定列中删除异常值。我从几年前的帖子中找到了一个应该可以工作的解决方案,但要搜索整个数据框:
df_final[(np.abs(stats.zscore(df_final)) < 3).all(axis=1)]
由于我的数据框具有不同的数据类型,例如日期,我在运行时收到以下错误
TypeError: unsupported operand type(s) for +: 'Timestamp' and 'Timestamp'
我觉得只获取单个列的异常值的解决方案应该很容易,但是当我尝试时
df_final[(np.abs(stats.zscore(df_final['rating'])) < 3).all(axis=1)]
要仅获取 rating 列的异常值,我会收到错误
AxisError: axis 1 is out of bounds for array of dimension 1
我知道(认为?)这个问题与创建的数组有关,但我对它的理解还不够好,无法找到解决方案。谁能更好地向我解释一下?
编辑:似乎df_final[(np.abs(stats.zscore(df_final['rating'])) < 3)] 有效。老实说,不确定其背后的原因,所以如果有人可以解释或有更好的解决方案,我仍然很感兴趣。
【问题讨论】:
标签: python pandas dataframe outliers