Python 解决数据帧百分比计算的最佳方法

Python 解决数据帧百分比计算的最佳方法,python,pandas,Python,Pandas,我有一个数据帧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

我有一个数据帧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()
来查看在另一个中存在多少。但我对其余的一无所知。我不想求助于循环,因为我有数千种不同的DFs需要比较和提取百分比。

如果我们讨论的是DF2中排名列的第20个百分位,那么我相信C也会包括在内

但是,如果需要,您可以使用下面的代码并进行修改

df2_20 = df2[df2.Rank >= df2.Rank.quantile(q=.8)]
df1.isin(df2_20).all(1).mean()

使用分位数+
+
平均值

DF1.Rank.gt(DF2.Rank.quantile(.8)).mean()

0.33333333333333331

如果你能描述一下,这将是一个更好的答案。