我有一个包含多列的数据框。我想进行“双重排序”,在A列的最低50%范围内提取B列的最低50%范围。
A B
3 1.0
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
以这种方式,重要的是第三行不要变为真。
非常感谢您的帮助!
答案 0 :(得分:2)
这是你的追求吗?
(
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
第一个分配创建一个标志,以指示A是否低于50%的分位数。
第二个分配完成2件事: