#python
#python
Вопрос:
Попробовал пару разных методов, и оба не вернули желаемый результат. Я пытаюсь получить .349566 для отображения в моих микросекундах десятичного знака по сравнению с .349565, который отображается в данный момент, поскольку я хочу, чтобы он округлялся по сравнению с усечением.
In [113]: dateutil.parser.parse('2014-06-18 13:06:00.349565827')
Out[113]: datetime.datetime(2014, 6, 18, 13, 6, 0, 349565)
(Pandas)
In [114]: pd.Timestamp('2014-06-18 13:06:00.349565827')
Out[114]: Timestamp('2014-06-18 13:06:00.349565', tz=None)
Мысли о быстром способе сделать это? Я знаю много вариантов, использующих манипулирование строками и тому подобное, но это, очевидно, не моя цель.
Комментарии:
1. Я не думаю, что есть какой-либо способ без манипулирования строкой
Ответ №1:
К сожалению, вам нужно будет округлить его вручную. С положительной стороны, это относительно легко сделать в вашем случае использования. Форматирование строк для чисел с плавающей запятой может округляться изначально, так что, вероятно, именно так я бы и поступил:
date_str = '2014-06-18 13:06:00.349565827'
# split off the seconds amp; microseconds
beginning, sec = date_str.rsplit(':', 1)
# Use string formatting to recreate a rounded timestamp
date = dateutil.parser.parse('{}:{:02.6f}'.format(beginning, float(sec)))
Комментарии:
1. Это выполняется, это дает
TypeError: 'NoneType' object is not iterable
2. @PadraicCunningham Я по ошибке добавил дополнительную десятичную точку. Теперь это исправлено.
3. Эй, как насчет чего-то подобного: date_str = ‘20140618 19:16:38.73754749’ — на выходе отображается 737547, при правильном округлении это будет 737548.
4. @user1610719 Я не знаю ни одной встроенной функции округления (в Python или иным образом), которая бы выполняла такое округление в конце. Если вы хотите такого поведения, вам придется реализовать его самостоятельно.