2015-07-21 100 views
0

我想用大熊猫to_csv方法有以下行的熊猫数据帧df写入一个CSV文件:大熊猫:float_format和小数点符号不能正常工作

df.to_csv(f, index=False, header=False, decimal=',', sep=' ', float_format='%.3f') 

其中给出一个CSV文件一样如下:

295.998 292.500 293.000 293.000 
295.998 292.500 293.000 293.000 
295.998 292.500 293.000 293.000 

所以float_format选项工作得很好,因为所有的数字都有三位十进制数字。但是,decimal选项(decimal = ',')似乎不起作用,因为小数点是点而不是逗号。

我所感兴趣的是类似以下内容:

295,998 292,500 293,000 293,000 
295,998 292,500 293,000 293,000 
295,998 292,500 293,000 293,000 

我怎样才能便于学习大熊猫用三个十进制数和所需的逗号作为小数点符号?

+0

什么是您的熊猫版本? –

+1

你使用的是什么版本的熊猫?这工作正常'0.16.2' – EdChum

+0

我的版本是0.15.2('pd .__ version__'的输出) – albert

回答

0

此行为可能是大熊猫版本0.15.2,因为它使用以下命令更新到0.16.2版本后,工作正常的错误:

sudo pip3 install -U pandas 

这可以通过

import pandas as pd 
pd.__version__ 
检查

给予

'0.16.2' 

通过使用问题中提供的命令生成的csv文件看起来如所需:

295,998 292,500 293,000 293,000 
295,998 292,500 293,000 293,000 
295,998 292,500 293,000 293,000 
+1

只是一个说明:它不是一个错误,但'decimal'选项只在熊猫0.16中引入'to_csv'没有提出一个未知的论点之前可以被视为一个错误.. :-)) – joris

0

我有同样的问题运行熊猫版本“0.17.1”。我发现我没有事先指定DataFrame的dtype,并且它以类型对象(df.dtypes)结束。型对象的Dataframes似乎没有被正确地转换为下面的最小的示例显示:

df_object = pd.DataFrame({'a': [1.1, 1.2, 1.3], 'b':[2.1, 2.2, 2.3],}, dtype=object) 
df_object.to_csv(decimal=',') 

'A,B \ n0,1.1,2.1 \ n1,1.2,2.2 \ n2,1.3,2.3 \ N'

df_float = pd.DataFrame({'a': [1.1, 1.2, 1.3], 'b':[2.1, 2.2, 2.3],}, dtype=float) 
df_float.to_csv(decimal=',') 

'a,b \ n0,“1,1”,“2,1”\ n1,“1,2”,“2,2”\ n2,“1,3”,“2 ,3“\ n'