Фильтрация данных на основе квантиля на группу значений - PullRequest
1 голос
/ 30 января 2020

Давайте предположим, что у меня есть такой фрейм данных:

import pandas as pd
df = pd.DataFrame({'col1':['A','A', 'A', 'B','B'], 'col2':[2, 4, 6, 3, 4]})

Я хочу сохранить от него только те строки, которые имеют значения в col2, которые меньше, чем x-й квантиль значений для каждой из групп значений col1 в отдельности.

Например, для 60-го процентиля кадр данных должен выглядеть так:

  col1  col2
0    A     2
1    A     4
2    B     3

Как я могу сделать это эффективно в pandas?

1 Ответ

3 голосов
/ 30 января 2020

У нас есть transform с quantile

df[df.col2.lt(df.groupby('col1').col2.transform(lambda x : x.quantile(0.6)))]
  col1  col2
0    A     2
1    A     4
3    B     3
...