我有几列不同类型的列。我想在.3
浮动时将所有数字列格式化为csv。因此,在这种情况下,a
和b
应该变成1.000
和2.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
答案 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')