Как использовать: разделить строку 'чч: мм: сс' на миллисекунды с плавающей точкой в ​​каждой строке кадра данных в Python? - PullRequest
1 голос
/ 23 мая 2019

Я довольно новичок в python, и я борюсь с ML-Problem, где я хочу преобразовать столбец формата бегущих шагов 'hh:mm:ss' в миллисекунды. Темпы Тип: Строка и Миллисекунды должны быть в Типе: плавать впоследствии.

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

import datetime

def convertMinToMs(s):

    hr, min, sec = map(float, s.split(':'))
    milliseconds = ((min * 60)*1000) + (sec*1000)

    return milliseconds

millisec = convertMinToMs(dataset['Avg Pace'].iloc[0])

Понятия не имею, как это сделать для серии данных. Я попытался пройти серию с удалением .iloc[0], но это привело к следующей ошибке:

AttributeError: у объекта 'Series' нет атрибута 'split'

Ответы [ 3 ]

1 голос
/ 23 мая 2019

Кратчайший ответ:

dataset['Avg Pace'].apply(convertMinToMs)
1 голос
/ 23 мая 2019

Попробуйте использовать функцию панд:

dataset['Avg Pace'] = pd.to_datetime(dataset['Avg Pace'], format="%H:%M:%S")

Тогда вы можете получить все, что захотите, от этих объектов даты и времени.

Надеюсь, что это работает

1 голос
/ 23 мая 2019

Преобразование столбца в DataFrame с 3 столбцами, приведением к плавающим значениям, а затем несколькими вторыми и третьими столбцами:

df = dataset['Avg Pace'].str.split(':', expand=True).astype(float)
print (df)
      0     1     2
0   0.0  15.0  12.0
1  10.0   1.0  30.0

millisec = ((df[1] * 60)*1000) + (df[2]*1000)
print (millisec)
      0     1     2
0   0.0  15.0  12.0
1  10.0   1.0  30.0

Но если вам нужны миллисекунды с часами, преобразуйте значения в timedeltas на to_timedelta, затем в нативный формат в наносекундах и разделите на ms:

millisec = pd.to_timedelta(dataset['Avg Pace']).values.astype(np.int64) / 10**6
print (millisec)
[  912000. 36090000.]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...