首页 > 解决方案 > 熊猫系列四舍五入中位数和平均值

问题描述

我有一个series

s = pd.Series([1.115,2.337,3.225])
s.mean()

2.2256666666666667

我想知道如何四舍五入mean()median()值,这样如果小数点后第 3 位的数字是 5,它应该向下舍入,所以结果应该是2.22而不是2.2256666666666667.

标签: python-3.xpandasmeanseriesmedian

解决方案


numpy.around将四舍五入到最近的偶数

>>> s = pd.Series([1.115,2.337,3.225])
>>> s.mean()
2.2256666666666667
>>> np.around(s.mean(), decimals=4)
2.2257
>>> np.around(s.mean(), decimals=3)
2.226
>>> np.around(s.mean(), decimals=2)
2.23

...但:

如果小数点后第三位的数字是 5,则应该向下舍入 [...] 应该是 2.22 而不是 2.2256666666666667。

这不仅仅是四舍五入;只有截断到小数点后 3 位,然后四舍五入到 2,才会得到 2.22:

>>> (np.trunc([s.mean() * 1000.]) / 1000.)[0]
2.225
>>> (np.around(np.trunc([s.mean() * 1000.]) / 1000., decimals=2))[0]
2.22

推荐阅读