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

如何在python中从文件名中提取时间戳?,python,pandas,datetime,timestamp,Python,Pandas,Datetime,Timestamp,我有10个小时档案,名字是:file\u 2018-01-01\u 01\u temp.tif``file\u 2018-01-01\u 02\u temp.tif文件_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')]

我有10个小时档案,名字是:
file\u 2018-01-01\u 01\u temp.tif``file\u 2018-01-01\u 02\u temp.tif
<代码>文件_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:如果在pandas中创建了所需的时间戳数组,则无法将类型的输入[索引(['201801011','2018010102')转换为时间戳

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)]
时间戳列表

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')]

是什么原因导致不能使用
aa=pd.to_datetime([f[5:18]表示文件名中的f],format='%Y-%m-%d_%H')
?Hi@jezrael,有了它,我还得到
无法转换输入[DatetimeIndex](['2018-01-01 01:00:00'……类型为时间戳的错误。对于许多文件使用第一个代码,结果中没有排序时间。@nickan-如何工作
pd.to_datetime([f[5:18]对于文件名中的f],格式=“%Y-%m-%d_%H”)。排序值()
?这是一项伟大的工作:)