将所有数字列的csv编写为带有3个小数点的浮点数

时间:2018-12-07 08:41:34

标签: pandas

我有几列不同类型的列。我想在.3浮动时将所有数字列格式化为csv。因此,在这种情况下,ab应该变成1.0002.000,但是c应该保留3,因为它的值是字符串,而不是字符串一个数字。

import io 
sio = io.StringIO() 
(pd.DataFrame([{'a': 1, 'b': 2.0, 'c': '3'}])
 .astype(float)
 .to_csv(sio, index=False, float_format='{:.2f}'))



TypeError: not all arguments converted during string formatting

1 个答案:

答案 0 :(得分:2)

首先,当您使用astype(float)时,如果第三列是有效数字,则将其转换为float。否则,astype将引发异常。因此,您可能应该分别更改每个列的类型。其次,该错误是由无效的格式说明符引起的。它应该是“%.2f”。

import io
sio = io.StringIO()
df = pd.DataFrame([{'a': 1, 'b': 2.0, 'c': '1'}])
df[['a', 'b']] = df[['a', 'b']].astype(float)
df.to_csv(sio, index=False, float_format='%.3f')