基于每组值的分位数筛选数据框

问题描述 投票:0回答:1

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

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中有效地做到这一点?

pandas group-by quantile
1个回答
0
投票

我们有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
© www.soinside.com 2019 - 2024. All rights reserved.