используя «ИЛИ» для выбора данных в пандах
У меня есть дата-кадр значений, и я хотел бы изучить строки, которые являются выбросами. Я написал функцию ниже, которая может быть вызвана сgroupby().apply()
функция, и она отлично работает для высоких или низких значений, но когда я хочу объединить их вместе, я генерирую ошибку. Я как-то испортил логическое значениеOR
выбор, но я мог только найти документацию для критериев выбора, используя&
, Мы ценим любые предложения.
Зак cp
df = DataFrame( {'a': [1,1,1,2,2,2,2,2,2,2], 'b': [5,5,6,9,9,9,9,9,9,20] } )
#this works fine
def get_outliers(group):
x = mean(group.b)
y = std(group.b)
top_cutoff = x + 2*y
bottom_cutoff = x - 2*y
cutoffs = group[group.b > top_cutoff]
return cutoffs
#this will trigger an error
def get_all_ outliers(group):
x = mean(group.b)
y = std(group.b)
top_cutoff = x + 2*y
bottom_cutoff = x -2*y
cutoffs = group[(group.b > top_cutoff) or (group.b < top_cutoff)]
return cutoffs
#works fine
grouped1 = df.groupby(['a']).apply(get_outliers)
#triggers error
grouped2 = df.groupby(['a']).apply(get_all_outliers)