大熊猫和分裂的熊猫浮点问题

时间:2013-04-19 14:11:02

标签: python pandas floating-point-precision

我按降序排列总销售额(TOTAL_2012),并且我试图让团体列表大约占销售额的25%,因此第1层集团的销售额/公司总销售额最高。

sales['PERCENT_2012'] = sales['TOTAL_2012'] / sales['TOTAL_2012'].sum() 
sales['CUM_PERCENT_2012'] = sales['PERCENT_2012'].cumsum()

问题是CUM_PERCENT_2012大于100%或1.00,其值为1.0000004所以我知道这是一个浮点问题,有没有办法强制精确/舍入到2位小数。

3 个答案:

答案 0 :(得分:2)

添加.round():

sales['PERCENT_2012'] = sales['TOTAL_2012'] / sales['TOTAL_2012'].sum() 
sales['CUM_PERCENT_2012'] = sales['PERCENT_2012'].cumsum().round(2)

这实际上是在将数据添加到列之前对数据进行舍入。您还可以使用np.round(df)来舍入数据,仅用于呈现/可视化。

答案 1 :(得分:1)

如果您只是想明智地展示它,为什么不运行

pd.set_option('precision',3)

答案 2 :(得分:0)

您可以在结果上使用format()

>>> "{0:.2f}".format(13.949999999999999)
'13.95'

有关详细信息,请参阅Python - String - Format