Прежде всего, когда вы используете astype(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')