我有一个熊猫数据框(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
答案似乎是正确的。浮点数在我们的系统中无法完美表示。必然会有一些不同。阅读浮点指南。
>>> a = 5.9+5.4+2.4+3.2
>>> a / 4
4.2250000000000005
正如您所说的,如果您只想在小数点后获得固定数量的点,则可以设置结果的格式。
>>> "{:.3f}".format(a/4)
'4.225'
您可以使用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编写一个用汇编语言编写的程序,仅用于实现十进制计数器的实现,该计数器被逻辑控制器接口使用。起始计数的输入必须是通过完整界面的输入,此外,我们在界面上显示计数。 让我们考虑一个示例程序– 紧随其后的程序应始终包含一个无限循环,直到用户的输入仅将有效二进制数字十进制值(