2016-08-12 4 views
-1

Я новичок в python pandas, и у меня возникают трудности с округлением всех значений в столбце, так как между десятичной точкой и нолем пробегает пробел. Например,Округление десятичных знаков Python

 Hi 
     21. 0 
     8. 0 
     52. 0 
     45. 0 

Я попытался с помощью моего текущего кода ниже, но он дал мне:

invalid literal for float(): 21. 0

 df.Hi.astype(float).round() 

ответ

1

Попробуйте использовать replace на строку, чтобы заменить все пробелы в строке перед преобразованием к поплавок:

df.Hi.str.replace(' ', '').astype(float).round() 
+0

Он возвращает «не может преобразовать серию к <типа„поплавком“>» –

+1

Сделано правку в этот ответ с правильным синтаксисом. Вот так, до тех пор, пока редактирование не будет одобрено @NickEdwards: 'df.Hi.str.replace ('', '') .astype (float) .round()' – Kartik

+0

Я не вижу вашего запроса на редактирование в любом месте , но я сделал редактирование самостоятельно с вашим исправлением - спасибо! –

0

Если вы правильно поняли,- float.

У вас есть пробел между десятичными точками и нулями, что означает, что ваши значения являются строками.

Вы можете преобразовать их в float с помощью функции lambda.

df['Hi'] = df['Hi'].apply(lambda x: x.replace(" ", "")).astype(float) 
print(df) 
    Hi 
0 21.0 
1 8.0 
2 52.0 
3 45.0 

print(df.dtypes) 
Hi float64 
dtype: object 
+0

Я получил ошибку атрибута: объект «float» не имеет атрибута «replace» –

+0

Я предположил, что значения «Hi» были строками из-за пробела. Итак, ваши значения на самом деле 'float' ?? Что мне не хватает? –

+0

Тип данных все еще является объектом, просто не может преобразовать его в float. –

Смежные вопросы