首页 > 解决方案 > 计算百分位使用熊猫

问题描述

我有一个循环遍历的数据框,从中获取信息,然后使用该信息来查找一些指标。我有类似的东西

数据框1:

|   student 1     |   student 2    |
|   kate          |   john         |
|   david         |   kelly        |

数据框2:

|   student       |       A      |       B      |
|   kate          |       17     |       8      |
|   david         |       20     |       15     |
|   john          |       17     |       40     |

基本上我会选择凯特和约翰的名字。然后我会遍历数据框 2 并寻找那两个学生。然后,我想找到它们在 A 列和 B 列中所处的百分位数。我做了类似的事情:

perc = stats.percentileofscore(student1Info[1],data['A'] , 'rank')

其中student1Info[1]持有 17(凯特在 A 列中的值)

但它会导致错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我会很感激任何建议。另外,我可以使用类似的方法来查找日期时间的百分位数吗?例如,我有每个学生的一堆提交时间,我想找出学生提交时间所在的百分位数。

谢谢!!

标签: pythonpandas

解决方案


在函数中scipy.stats.percentilieofscore,您需要使用数组作为第一个参数,使用分数作为第二个参数:

perc = stats.percentileofscore(data['A'], data.loc['kate', 'A'])

scipy.stats.percentileofscore(a, score, kind='rank')


推荐阅读