Напишите csv со всеми числовыми столбцами как число с плавающей запятой с 3 десятичными знаками - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть несколько столбцов разных типов.Я хотел бы отформатировать все числовые столбцы в CSV, как .3 плавает.Таким образом, в этом случае 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

1 Ответ

0 голосов
/ 07 декабря 2018

Прежде всего, когда вы используете 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...