Преобразование строкового времени с миллисекундами в столбце python в метку времени

У меня есть столбец ("arrival_time") в кадре данных ("df"), который содержит строковые значения времени в формате "H:M:S:f" (f --> миллисекунды). У некоторых есть только «H: M: S», поэтому формат не соответствует всему столбцу.

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

Образец данных:

0          20:43:09:01
1          06:00:16
2          06:30:21
3          07:00:03
4          06:32:43
5          07:33:31
6          07:37:39:09
7          07:49:01
8          08:52:05
9          08:29:44:10
import time
import datetime

def conv_date(myDate):
    try:
        if str(myDate).count(":") == 3:
            dt = datetime.datetime.strptime(myDate,'%H:%M:%S,%f').timestamp()
        else:
            dt = datetime.datetime.strptime(myDate,'%H:%M:%S').timestamp()
    except:
        return float('NaN')
    return dt

# some values are data type 'float' so converted everything to string
df["arrival_time"] = df["arrival_time"].astype(str).apply(conv_date)

Output:
0         -2.208885e+09
1         -2.208938e+09
2         -2.208937e+09
3         -2.208935e+09
4         -2.208936e+09
5         -2.208933e+09

Я получаю отрицательную временную метку, когда ожидал положительное значение.


person Glenn G.    schedule 10.05.2019    source источник
comment
Пожалуйста, предоставьте образец ваших данных.   -  person gmds    schedule 10.05.2019


Ответы (1)


Попробуйте добавить текущий день к данным и используйте это:

p = pd.to_datetime("2019-04-22 05:03:35",format='%Y-%m-%d %H:%M:%S.%f')
p.timestamp()
1555909415.0

p = pd.to_datetime("2019-04-22 05:03:35.74",format='%Y-%m-%d %H:%M:%S.%f')
p.timestamp()
1555909415.74

Вы можете добавить текущую дату следующим образом:

df.date = df.date.apply(lambda x: datetime.now().date().strftime("%Y-%m-%d") + " " + x)

и использовать это для применения ко всему фрейму данных:

df["event_timestamp"] = pd.to_datetime(df["event_timestamp"], format='%Y-%m-%d %H:%M:%S.%f')
person ashish14    schedule 10.05.2019