Я делаю очистку своей базы данных. В одной из таблиц столбец времени имеет такие значения, как 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"]})
Я ожидаю, что вывод будет похож на первую строку значений столбца, показанных выше.
в каком формате другие значения в секундах/минутах/часах??
Остальные значения, как и в первой строке, имеют формат мм:сс.






Какова правильная интерпретация времени, скажем, для первой записи? 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 секунд.
Могу ли я узнать, как появились эти значения с плавающей запятой? Какова логика/отношение между 19 mins и 0.013391204?
Джо. Известно, что событие произошло около 19 минут. Когда я получил эти данные, столбец времени показал значение с плавающей запятой.
Я вижу, в этом была разница. Используйте тот же код человека и измените параметры на days вместо hours, и вы получите нужное значение, отредактировав ответ сейчас :)). Кстати, не забудьте проголосовать и принять пост после подтверждения. Ваше здоровье!
Сначала преобразуйте значения с помощью 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
Добро пожаловать в StackOverflow. Пожалуйста, найдите время, чтобы прочитать этот пост на как предоставить отличный пример панд, а также как предоставить минимальный, полный и проверяемый пример и соответствующим образом изменить свой вопрос. Эти советы по как задать хороший вопрос также могут быть полезны.