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

时间:2017-03-19 15:35:39

标签: 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       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并提取百分比。

2 个答案:

答案 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()