我在熊猫中有一个包含四列的数据框(df),并且我想要一个新列来表示这四列的平均值:df ['mean'] = df.mean(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


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

我在python 3.3.2和pandas 0.11.0中使用winpython

最佳答案

您可以使用float_format参数:

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 - 用 Pandas 错误的十进制计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18147230/

10-12 16:33
查看更多