Преобразовать время в числовое датафрейм

Как из такого:

введите сюда описание изображения

получить такое:

введите сюда описание изображения

код по типу такого не работает: df["Time"] = pd.to_datetime(df['Time']).dt.strftime('%H%M%S')


Ответы (1 шт):

Автор решения: MaxU

Пример:

In [238]: df = pd.read_csv("sec.csv", index_col=0)

In [239]: df.dtypes
Out[239]: 
Date    object
Time    object
dtype: object

In [240]: df["Time_int"] = pd.to_numeric(df["Time"].str.replace(":", "")).astype(int)

In [241]: df
Out[241]: 
           Date     Time  Time_int
0      6/2/2020  0:00:00         0
1      6/2/2020  0:00:01         1
2      6/2/2020  0:00:02         2
3      6/2/2020  0:00:03         3
4      6/2/2020  0:00:04         4
...         ...      ...       ...
30436  6/2/2020  8:27:16     82716
30437  6/2/2020  8:27:17     82717
30438  6/2/2020  8:27:18     82718
30439  6/2/2020  8:27:19     82719
30440  6/2/2020  8:27:20     82720

[30441 rows x 3 columns]

In [242]: df.dtypes
Out[242]: 
Date        object
Time        object
Time_int     int64   # <--- NOTE !!!
dtype: object

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

In [170]: df["DT"] = pd.to_datetime(df["Date"] + " " + df["Time"].astype(str).str.zfill(6))

In [171]: df
Out[171]: 
        Date      Time  Time_int                  DT
0  6/02/2020  00:00:00         0 2020-06-02 00:00:00
1  6/02/2020  00:00:01         1 2020-06-02 00:00:01
2  6/02/2020  00:00:02         2 2020-06-02 00:00:02
3  6/02/2020  23:59:59    235959 2020-06-02 23:59:59

In [172]: df.dtypes
Out[172]: 
Date                object
Time                object
Time_int             int64
DT          datetime64[ns]
dtype: object
→ Ссылка