代码之家  ›  专栏  ›  技术社区  ›  daiyue

熊猫系列四舍五入中值和平均值

  •  -1
  • daiyue  · 技术社区  · 6 年前

    我有一个 series ,

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

    我想知道如何绕过 mean() median() 值,因此如果第三个小数位的数字是5,它应该向下舍入,因此结果应该是 2.22 而不是 2.2256666666666667 是的。

    1 回复  |  直到 6 年前
        1
  •  1
  •   mtd    6 年前

    numpy.around 将转为 Nearest Even 以下内容:

    >>> 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.2256666666667。

    这不仅仅是四舍五入;只有截断到小数点后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