从列转换为日期时间

2024-06-01 02:09:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据如下表所示:

YEAR DOY Hour 
2015   1  0   
2015   1  1   
2015   1  2   
2015   1  3   
2015   1  4   
2015   1  5   

我是这样读取文件的:

df = pd.read_table('data2015.lst', sep='\s+')
lines = len(df)

要将其转换为datetime对象,我需要:

dates = []
for l in range(0,lines):
    date = str(df.ix[l,0])[:-2] +' '+ str(df.ix[l,1])[:-2] +' '+ str(df.ix[l,2])[:-2]
    d = pd.to_datetime(date, format='%Y %j %H')
    dates.append(d)

但这需要很多时间。你知道吗

有没有什么方法不用循环就可以(更直接地)完成?你知道吗


Tags: 文件数据dfreaddatetimedatetableyear
1条回答
网友
1楼 · 发布于 2024-06-01 02:09:22

阅读时,你可以在一行中完成:

df = pd.read_csv('file.txt', sep='\s+', index_col='Timestamp',
                parse_dates={'Timestamp': [0,1,2]},
                date_parser=lambda x: pd.datetime.strptime(x, '%Y %j %H'))


Timestamp
2015-01-01 00:00:00
2015-01-01 01:00:00
2015-01-01 02:00:00
2015-01-01 03:00:00
2015-01-01 04:00:00
2015-01-01 05:00:00

相关问题 更多 >