Я использую набор данных kaggle цена дома , и у меня есть следующий код, который вычисляет межквартильные диапазоны
# bin by area
df['sqft_area_binned']=pd.cut(x=df['sqft_living'], bins=5)
q1 = df.groupby(['sqft_area_binned'])['price'].quantile(0.25)
q3 = df.groupby(['sqft_area_binned'])['price'].quantile(0.75)
iqr = q3 - q1
upper = q3 + 1.5*iqr
lower = q1 - 1.5*iqr
print(upper)
>>>
sqft_area_binned
(276.75, 2940.0] 946000.0
(2940.0, 5590.0] 1900000.0
(5590.0, 8240.0] 4332500.0
(8240.0, 10890.0] 10210500.0
(10890.0, 13540.0] 10410000.0
Name: price, dtype: float64
Теперь я хочу вернуть список идентификаторов (первый столбец вdf
), где sqft_area_binned
это либо ниже , соответствующее lower
, либо выше соответствующее upper
.
Например, если дом (одинстрока в df
) имеет sqft_area_binned=(276.75, 2940.0]
и price
> 946000.0, затем возвращает id
.
Как это возможно, возможно, с использованием фильтрации или .isin()
?