当前位置: 首页 > 知识库问答 >
问题:

使用熊猫进行错误的十进制计算

严元白
2023-03-14

我有一个熊猫数据框(df),有四列,我想要一个新的列来表示这四列的平均值:df['mean']=df。平均数(1)

  1    2    3    4   mean 
NaN  NaN  NaN  NaN      NaN  
5.9  5.4  2.4  3.2    4.225  
0.6  0.7  0.7  0.7    0.675  
2.5  1.6  1.5  1.2    1.700  
0.4  0.4  0.4  0.4    0.400 

到目前为止还不错。但当我将结果保存到csv文件时,我发现:

5.9,5.4,2.4,3.2,4.2250000000000005
0.6,0.7,0.7,0.7,0.6749999999999999
2.5,1.6,1.5,1.2,1.7
0.4,0.4,0.4,0.4,0.4

我想我可以在“平均值”列中强制使用格式,但知道为什么会发生这种情况吗?

我使用winpython与python 3.3.2和熊猫0.11.0

共有2个答案

赫连方伟
2023-03-14

答案似乎是正确的。浮点数在我们的系统中无法完美表示。必然会有一些不同。阅读浮点指南。

>>> a = 5.9+5.4+2.4+3.2
>>> a / 4
4.2250000000000005

正如您所说的,如果您只想在小数点后获得固定数量的点,则可以设置结果的格式。

>>> "{:.3f}".format(a/4)
'4.225'
应俭
2023-03-14

您可以使用float\u格式参数:

import pandas as pd
import io

content = '''\
1    2    3    4   mean 
NaN  NaN  NaN  NaN      NaN  
5.9  5.4  2.4  3.2    4.225  
0.6  0.7  0.7  0.7    0.675  
2.5  1.6  1.5  1.2    1.700  
0.4  0.4  0.4  0.4    0.400'''

df = pd.read_table(io.BytesIO(content), sep='\s+')
df.to_csv('/tmp/test.csv', float_format='%g', index=False)

产量

1,2,3,4,mean
,,,,
5.9,5.4,2.4,3.2,4.225
0.6,0.7,0.7,0.7,0.675
2.5,1.6,1.5,1.2,1.7
0.4,0.4,0.4,0.4,0.4
 类似资料:
  • 我用python 2.7.7安装了Anaconda。 但是,每当我运行“import pandas”时,就会出现错误: 我尝试运行建议的命令,但它指出 以前是否有人遇到过这种情况并找到了解决方案?

  • 任何帮助都会很好。

  • Python3 实例 以下代码用于实现十进制转二进制、八进制、十六进制: # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 获取用户输入十进制数 dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为二进制为:", bin(dec

  • 我想设置两个BigDecimal数字和的比例。如本例所示: 当我运行时,我有一个例外: 为什么四舍五入是必要的?如果我不想让周围,什么是解决方案? 谢谢

  • 本文向大家介绍使用逻辑控制器的十进制计数器,包括了使用逻辑控制器的十进制计数器的使用技巧和注意事项,需要的朋友参考一下 我们用8085编写一个用汇编语言编写的程序,仅用于实现十进制计数器的实现,该计数器被逻辑控制器接口使用。起始计数的输入必须是通过完整界面的输入,此外,我们在界面上显示计数。 让我们考虑一个示例程序– 紧随其后的程序应始终包含一个无限循环,直到用户的输入仅将有效二进制数字十进制值(