如何从python中的文件名中提取时间戳?

时间:2019-06-05 10:29:26

标签: python pandas datetime timestamp

我有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 个答案:

答案 0 :(得分:1)

如果需要在熊猫中创建时间戳数组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')]