Как извлечь метку времени из имен файлов в Python? - PullRequest
1 голос
/ 05 июня 2019

У меня есть 10 почасовых файлов с именами: file_2018-01-01_01_temp.tif``file_2018-01-01_02_temp.tif ... file_2018-01-01_10_temp.tif. Я хочу создать метку времени в пандах:

import glob
import pandas as pd
import os

filenames = [os.path.basename(x) for x in glob.glob('/abc/Jupyter_Works_2/1/*.tif')]
aa = pd.to_datetime([f[5:18] for f in filenames], format='%Y-%m-%d_%H').strftime('%Y%m%d%H')
pd.DatetimeIndex([pd.Timestamp(aa)])

Показывает TypeError: Cannot convert input [Index(['2018010101', '2018010102'....... of type <class 'pandas.core.indexes.base.Index'> to Timestamp.

1 Ответ

1 голос
/ 05 июня 2019

При необходимости создается массив отметок времени в пандах DatetimeIndex:

d = pd.to_datetime([f[5:18] for f in filenames], format='%Y-%m-%d_%H')
print (d)
DatetimeIndex(['2018-01-01 01:00:00', '2018-01-01 02:00:00',
               '2018-01-01 03:00:00'],
              dtype='datetime64[ns]', freq=None)

Если нужно время Python:

d = pd.to_datetime([f[5:18] for f in filenames], format='%Y-%m-%d_%H').to_pydatetime()
print (d)
[datetime.datetime(2018, 1, 1, 1, 0) datetime.datetime(2018, 1, 1, 2, 0)
 datetime.datetime(2018, 1, 1, 3, 0)]

Или список Timestamps:

d=[pd.Timestamp(x) for x in pd.to_datetime([f[5:18] for f in filenames], format='%Y-%m-%d_%H')]
print (d)
[Timestamp('2018-01-01 01:00:00'), Timestamp('2018-01-01 02:00:00'), 
 Timestamp('2018-01-01 03:00:00')]
...