【问题标题】:Filter dataframe based on the quantile per group of values根据每组值的分位数过滤数据框
【发布时间】:2020-05-16 08:54:12
【问题描述】:

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

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】:

    我们有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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      相关资源
      最近更新 更多