如何让Pandas rank的average方法均值保留3位小数或全局控制精度
问题解答
两种方案的可行性分析
- 方案1不可行:Pandas的
rank()方法的method参数是用来定义相同数值的排名规则(比如average、min、max等),和均值计算的小数精度没有关系,没法通过自定义这个参数来实现保留3位小数的均值计算。 - 方案2不可行:Python和Pandas没有全局设置能强制所有均值计算只保留3位小数,强行全局修改数值精度会影响其他计算的准确性,引发不必要的问题。
正确的解决方式
要和原脚本结果完全一致,直接在均值计算后对结果做四舍五入处理即可:
- 单个列的均值:
rounded_mean = round(mydata.mycolumn.mean(), 3) - 如果是分组后基于均值排名:
# 先计算分组均值并保留3位小数,再排名 grouped_data = mydata.groupby('分组列')['mycolumn'].mean().round(3) result_rank = grouped_data.rank()
确保所有涉及均值的环节都用round(3)对齐原语言的精度,就能解决排名结果不一致的问题。
内容的提问来源于stack exchange,提问作者gdevaux
相关产品推荐
相关产品推荐

