2015-07-21 278 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'