0

我正在尝试从数据集中的“价格”列中删除异常值。我已经能够创建异常值的数据框及其在其他列中的相应值,但我正在努力从父数据集中排除这些条目。我该怎么做?

这是我用来创建上述新数据框的代码:

lower_limit = pq1 - 1.5 *iqr
upper_limit = pq3 + 1.5 *iqr

newdf = df[((df['price'] < lower_limit) | (df['price'] > upper_limit))]
newdf

在指定布尔运算之前,我尝试使用波浪号(~),但这并没有给出预期的结果。

4

2 回答 2

0

您可以使用该.loc属性来获取原始数据框的样本,该样本newdf通过索引排除数据框的元素:

lower_limit = pq1 - 1.5 *iqr
upper_limit = pq3 + 1.5 *iqr

newdf = df[((df['price'] < lower_limit) | (df['price'] > upper_limit))]
df_not_outliers = df.loc[set(df.index) - set(newdf.index)]
于 2020-09-25T21:01:51.890 回答
0

相反的可能是:

newdf = df[((df['price'] > lower_limit) & (df['price'] < upper_limit))]
于 2020-09-24T16:27:01.877 回答