首页 > 解决方案 > 在 Python 中将 2 个日期列转换为日期时间

问题描述

我尝试了几件事来尝试将 2 个日期列转换为单个日期时间列,但我不断收到错误。我在名为 dfn2 的 df 中的数据如下所示:

   Plant_Name YYMMDD     HHMM vel(m/s)
0  CA I       20180101   100  6.197878
1  CA I       20180101   200  6.768227
2  CA I       20180101   300  6.779299
3  CA I       20180101   400  7.008282

而且,我试图以一个单一的日期时间列结束,例如:

   Plant_Name date_time               vel(m/s)
0  CA I       01/01/2018 1:00:00 AM   6.197878
1  CA I       01/01/2018 2:00:00 AM   6.768227
2  CA I       01/01/2018 3:00:00 AM   6.779299
3  CA I       01/01/2018 4:00:00 AM   7.008282

我尝试过这样的事情:

dfn2[['YYMMDD','HHMM']] = dfn2[['YYMMDD','HHMM']].apply(pd.to_datetime, format='%Y-%m-%d %H:%M.%f') 

并得到这个错误:

ValueError: time data '20180101' does not match format '%Y-%m-%d %H:%M.%f' (match)

标签: pythondatedatetime

解决方案


您的格式字符串不正确。试试这个:

>> pd.to_datetime(df["YYMMDD"].astype(str)+df["HHMM"].astype(str).str.zfill(4), format="%Y%m%d%H%M")
0   2018-01-01 10:00:00
1   2018-01-01 20:00:00
2   2018-01-01 03:00:00
3   2018-01-01 04:00:00
dtype: datetime64[ns]

这样zfill做是为了确保每个 HHMM 条目的长度正好是四个字符。


推荐阅读