как удалить нули после десятичной точки из строки удалить все нули после точки - PullRequest
0 голосов
/ 19 октября 2018

У меня есть фрейм данных со столбцом объекта, скажем, col1, который имеет значения: 1.00, 1, 0.50, 1.54

Я хочу получить вывод, подобный приведенному ниже: 1, 1, 0.5, 1.54в основном, удаляйте нули после десятичных значений, если у него нет цифры после нуля.Обратите внимание, что мне нужен ответ для данных.pd.set_option и round у меня не работают.

Ответы [ 5 ]

0 голосов
/ 19 октября 2018

Если хотите преобразовать целые числа и числа с плавающей запятой в строки без запаздывания 0 используйте this с map или apply:

df = pd.DataFrame({'col1':[1.00, 1, 0.5, 1.50]})

df['new'] = df['col1'].map('{0:g}'.format)
#alternative solution
#df['new'] = df['col1'].apply('{0:g}'.format)
print (df)
   col1  new
0   1.0    1
1   1.0    1
2   0.5  0.5
3   1.5  1.5

print (df['new'].apply(type))
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
3    <class 'str'>
Name: new, dtype: object
0 голосов
/ 19 октября 2018

Как насчет метода str.rstrip.Вот так (при условии, что ваши строки в списке):

a = ["1.00", "1" ,"0.50", "1.50"]

b = [e.rstrip('.0') for e in a]

>>> ['1', '1', '0.5', '1.5']
0 голосов
/ 19 октября 2018

Взято из этого ответа Stackoverflow , я думаю, вы хотели бы изменить точность отображения панд следующим образом:

pd.set_option('precision', 0)
0 голосов
/ 19 октября 2018

Я думаю, что-то вроде этого должно работать:

if val.is_integer() == True :
    val = int(val)
elif val.is_float() == True :
    val = Decimal(val).normalize()

Предполагая, что val является значением float внутри столбца данных.Вы просто приводите значение к целому числу.Вместо значения с плавающей запятой вы обрезаете лишние нули.

0 голосов
/ 19 октября 2018

Быстрое и грязное решение заключается в использовании "%g" % value, который преобразует числа с плавающей точкой 1.5 в 1.5, но 1.0 в 1 и так далее.Отрицательный побочный эффект заключается в том, что большие числа будут представлены в научных обозначениях, таких как 4.44e+07.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...