Столбец Pandas Dataframe Time имеет значения с плавающей запятой - PullRequest
0 голосов
/ 08 июля 2019

Я делаю очистку моей базы данных.В одной из таблиц столбец времени имеет значения, такие как 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"]})

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

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Сначала преобразуйте значения на 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
0 голосов
/ 08 июля 2019

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

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

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

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

Output:'0:19:17.000026'

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

...