Специальный фильтр панд данных - PullRequest
2 голосов
/ 19 марта 2019

У меня есть датафрейм:

   BPR_free_speed  BPR_speed  Volume  time_normalised  free_capacity  
0           17.88  15.913662     580         1.593750          475.0  
1           17.88  15.865198     588         2.041667          475.0  
2           17.88  16.511613     475         0.666667          475.0  
3           17.88  16.882837     401         1.091458          467.0  
4           99999  16.703004     438         1.479167          467.0  
5           17.88  16.553928     467         0.960417          467.0  

Как получить серию на особых условиях? Я хочу найти выбросы и поместить их в серию df["has_outliers"], например, если строка имеет значение больше 550 в любом столбце, тогда True, в противном случае False.

Выходные данные для этого кадра данных должны быть

     has_outliers
0           True
1           True
2           False 
3           False 
4           True 
5           False 

Я думаю, что это можно сделать даже с помощью numpy, но как это сделать?

1 Ответ

4 голосов
/ 19 марта 2019

Сравните на DataFrame.gt с DataFrame.any для проверки хотя бы одного значения True на строку:

df["has_outliers"] = df.gt(500).any(axis=1)

Или считать True с и привести к целым числам:

df["has_outliers"] = df.gt(500).sum(axis=1).astype(bool)
...