仅当另一列的值满足条件时获取列的分位数

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

我有一个包含多列的数据框。我想进行“双重排序”,在A列的最低50%范围内提取B列的最低50%范围。

A      B
3     1.1
5     2.0
7     0.5
9     2.1

在此示例中,A的第50个百分点将给我前两行。那么,这两个B的第50个百分位数为1.5。因此,我应该返回类似C列的内容:

A      B     C
3     1.0    True
5     2.0    False
7     0.5    False
9     2.1    False

以这种方式,重要的是第三行不会变为真。

非常感谢您的帮助!

python pandas dataframe quantile
1个回答
0
投票
这是您的追求吗?

( df.assign(C=df.A.lt(df.A.quantile(0.5))) .assign(C=lambda x: x.C & x.B.lt(x.loc[x.C].B.quantile(0.5))) ) A B C 0 3 1.1 False 1 5 0.9 True 2 7 2.0 False 3 9 2.1 False

© www.soinside.com 2019 - 2024. All rights reserved.