Столбец Pandas Dataframe Time имеет плавающие значения

Я делаю очистку своей базы данных. В одной из таблиц столбец времени имеет такие значения, как 0,013391204. Я не могу преобразовать это в формат времени [мм:сс]. Есть ли функция для преобразования этого в требуемый формат [мм:сс] Голова для колонны

0           20:00
1    0.013391204
2    0.013333333
3    0.012708333
4    0.012280093

Используйте следующие воспроизводимые данные:

import pandas as pd
df = pd.DataFrame({"time": ["20:00", "0.013391204", "0.013333333", "0.012708333", "0.012280093"]})

Я ожидаю, что вывод будет похож на первую строку значений столбца, показанных выше.

Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать этот пост на как предоставить отличный пример панд, а также как предоставить минимальный, полный и проверяемый пример и соответствующим образом изменить свой вопрос. Эти советы по как задать хороший вопрос также могут быть полезны.

jezrael 08.07.2019 08:45

в каком формате другие значения в секундах/минутах/часах??

Vivek 08.07.2019 08:52

Остальные значения, как и в первой строке, имеют формат мм:сс.

Sushant Rao 08.07.2019 09:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
436
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Какова правильная интерпретация времени, скажем, для первой записи? 0.013391204 это 48 seconds?

Потому что, если мы используем модуль datetime, мы можем преобразовать число с плавающей запятой в формат времени:

Обновление ответа для добавления новой информации

import datetime
datetime.timedelta(days = 0.013391204)
str(datetime.timedelta(days = 0.013391204))

Output:'0:19:17.000026'

Надеюсь это поможет :))

Привет Джо. Согласно данным, это значение должно быть где-то около 19 минут и x секунд.

Sushant Rao 08.07.2019 09:01

Могу ли я узнать, как появились эти значения с плавающей запятой? Какова логика/отношение между 19 mins и 0.013391204?

Joe 08.07.2019 09:02

Джо. Известно, что событие произошло около 19 минут. Когда я получил эти данные, столбец времени показал значение с плавающей запятой.

Sushant Rao 08.07.2019 09:10

Я вижу, в этом была разница. Используйте тот же код человека и измените параметры на days вместо hours, и вы получите нужное значение, отредактировав ответ сейчас :)). Кстати, не забудьте проголосовать и принять пост после подтверждения. Ваше здоровье!

Joe 08.07.2019 09:10

Сначала преобразуйте значения с помощью to_numeric с errors='coerce' для замены неплавающих значений на отсутствующие значения, а затем замените их исходными значениями с 00: для часов, последнее преобразование с помощью to_timedelta с unit='d':

df = pd.DataFrame({"time": ["20:00", "0.013391204", "0.013333333",
                            "0.012708333", "0.012280093"]})

s = pd.to_numeric(df['time'], errors='coerce').fillna(df['time'].radd('00:'))
df['new'] = pd.to_timedelta(s, unit='d')
print (df)
          time             new
0        20:00        00:20:00
1  0.013391204 00:19:17.000025
2  0.013333333 00:19:11.999971
3  0.012708333 00:18:17.999971
4  0.012280093 00:17:41.000035

Другие вопросы по теме