我试图从数据框中提取所有上下异常值。我可以在单独的行中进行操作,为uppers(例如hi_outs = (sepal_outliers > 4.05)
)分配变量,将另一个变量分配给lowers(例如lo_outs = (sepal_outliers < 2.05)
)。但我想尝试在一个变量中抓取两个。
sepal_outliers = x[:,1]
outliers = np.any(sepal_outliers < 2.05, sepal_outliers > 4.05)
df[outliers]
我不确定为什么我会收到以下错误。
TypeError: only integer scalar arrays can be converted to a scalar index
任何想法?我怎么能做这个工作?我会在此期间继续读书......
答案 0 :(得分:2)
你可能想要使用NumPy的布尔索引:
outliers = sepal_outliers[(sepal_outliers < 2.05) | (sepal_outliers > 4.05)]
也就是说,为您设置的条件的每个元素构造True
或False
的布尔数组,并将其索引到同一个数组sepal_outliers
中。
请注意,为此,您需要sepal_outliers
作为NumPy数组而不是常见或花园Python列表。