我有一个数据帧DF1:
ID Name Rank
1 A .99
2 B .8
3 C .8
另一个数据帧DF2:
ID Name Rank
4 D .999
2 B .8
3 C .8
8 H .79
10 J .78
11 K .75
30 AA .7
50 CB .6
6 F .5
7 G .4
我想知道DF1在DF2的前20个百分点中有多少。
所以DF2的前20个百分位是前两行,因为在这个简单的例子中我们只有10行。由于只有B在第20个百分点,因此只有3个中的1个,所以答案是33.33%
我知道我可以使用.isin()
来查看另一个存在多少。但我对其他人一无所知。我不想诉诸循环,因为我需要比较几千个不同的DF并提取百分比。
答案 0 :(得分:2)
使用quantile
+ >
+ mean
DF1.Rank.gt(DF2.Rank.quantile(.8)).mean()
0.33333333333333331
答案 1 :(得分:1)
如果我们在讨论DF2中Rank列的第20个百分位数,那么我相信C也会包括在内。
但是,您可以使用以下代码并根据需要进行修改。
df2_20 = df2[df2.Rank >= df2.Rank.quantile(q=.8)]
df1.isin(df2_20).all(1).mean()