首页 > 解决方案 > 将具有一年中某一天的字符串转换为日期时间

问题描述

我有一个字符串列,如下所示:

2018-24 7:10:0      
2018-8 12:1:20      
2018-44 13:55:19    

您看到的 24、8、44 是一年中的某一天,而不是日期。
如何将其转换为以下格式的日期时间列?

2018-01-24 07:10:00
2018-01-08 12:01:20
2018-02-13 13:55:19

我找不到与一年中的转换日期相关的任何内容?

标签: pythonpandasdatetime

解决方案


您需要格式字符串'%Y-%j %H:%M:%S'

In[53]:
import datetime as dt
dt.datetime.strptime('2018-44 13:55:19', '%Y-%j %H:%M:%S')

Out[53]: datetime.datetime(2018, 2, 13, 13, 55, 19)

%j是一年中的一天

对于pandas

In[59]:
import pandas as pd
import io
t="""2018-24 7:10:0
2018-8 12:1:20
2018-44 13:55:19"""
df = pd.read_csv(io.StringIO(t), header=None, names=['datetime'])
df

Out[59]: 
           datetime
0    2018-24 7:10:0
1    2018-8 12:1:20
2  2018-44 13:55:19

使用pd.to_datetime并传递format参数:

In[60]:
df['new_datetime'] = pd.to_datetime(df['datetime'], format='%Y-%j %H:%M:%S')
df

Out[60]: 
           datetime        new_datetime
0    2018-24 7:10:0 2018-01-24 07:10:00
1    2018-8 12:1:20 2018-01-08 12:01:20
2  2018-44 13:55:19 2018-02-13 13:55:19

推荐阅读