首页 > 解决方案 > 将字典中的数字四舍五入为唯一整数

问题描述

我已经使用 pandas rank 函数来获取字典

在值绑定的情况下,rank 函数给出非整数值。例如

{'EHS': 11.0,
 'Engineering': 4.5,
 'GPS': 9.5,
 'Logistics': 3.0,
 'NPI & Technical': 7.0,
 'OSD': 8.0,
 'Quality': 1.5,
 'RSC & Micronising': 1.5,
 'Strategy': 4.5,
 'Tech': 6.0,
 'Unknown Function': 9.5}

我想将所有非整数四舍五入到最接近的唯一整数。我不介意它们是向上还是向下取整,所以如果工程被四舍五入到 4 并且战略被四舍五入到 5 或者反之亦然,我会很高兴。

使用 dictionary.values() 我已经能够获取值,但不确定将值四舍五入并将它们放回字典中的最佳方法是什么

标签: pythondictionary

解决方案


这应该可以解决问题。至少对于您提出的情况。

[编辑:修改新注释后的代码]。如果您希望数字在这种情况下是连续的,您可以执行以下操作:

d = {'EHS': 11.0,
 'Engineering': 4.5,
 'GPS': 9.5,
 'Logistics': 3.0,
 'NPI & Technical': 7.0,
 'OSD': 8.0,
 'Quality': 1.5,
 'RSC & Micronising': 1.5,
 'Strategy': 4.5,
 'Tech': 6.0,
 'Unknown Function': 9.5}
ranks = list(range(1,len(d)+1))
for x,y in enumerate(sorted(d.items(),key=lambda x: x[1] )):
    d[y[0]] = ranks.pop(0)
print(d)

注意:如评论中所述。如果你使用rank函数,你可以直接得到结果。你得到浮点数是因为 pandas 不知道对你拥有的列进行排名的方法。您必须指定获取整数的方法。

例如:

df['my_col'].rank(method='first')

将给出整数等级。


推荐阅读