2016-05-19 20 views
1

我有一個df,其中包含一個浮點和文本值的列。pandas to_csv:如何在混合類型的列中格式化浮點數

df.some_column

0 48.5182 
1 58.2259 
2 some string 
3 48.5182 
4 17.4928 

我想寫的所有值CSV與四捨五入到0小數浮動。所以在此列中的值將是:

48 
58 
some string 
48 
17 

當我寫這篇文章,以CSV與

df.to_csv(output_path,encoding='utf-8', index=False, float_format='%.0f')

float_format被忽略,我得到十進制值。如果我先刪除帶有字符串的行,則按預期使用float_format。我四處尋找一種將值轉換爲int的方法,但沒有找到在列上執行此操作的方法。

它看起來像我可能遍歷所有的值和四捨五入他們,但我懷疑有一些更優雅的方式。

回答

1

你可以施放dtypestr再拆小數點,並採取了整數部分:

In [70]:  
df['some_col'] = df['some_col'].astype(str) 
df['some_col'] = df['some_col'].loc[df['some_col'].str.contains('.')].str.split('.').str[0] 
df 

Out[70]: 
      some_col 
index    
0    48 
1    58 
2  some string 
3    48 
4    17 

然後當你調用to_csv你不需要float_format PARAM

+0

這工作大!謝謝。 – SeeJay719