根据每组值的分位数过滤数据帧

时间:2020-01-30 17:12:18

标签: pandas group-by quantile

让我们假设我有一个这样的数据框:

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

我只希望保留col2处的值分别小于col1的每组值的第x分位数的行。

例如,对于第60个百分点,数据框应如下所示:

  col1  col2
0    A     2
1    A     4
2    B     3

如何在pandas中有效地做到这一点?

1 个答案:

答案 0 :(得分:3)

我们有transformquantile

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