Python 在dataframe中将字符串Month Year转换为datetime

Python 在dataframe中将字符串Month Year转换为datetime,python,pandas,datetime,Python,Pandas,Datetime,我的数据框中有一列名为“日期”,如下所示: Date Jan-1981 Feb-1981 Mar-1981 . . Sep-2005 . Dec-2008 是否有办法将其转换为日期时间格式,以便默认格式为YYYY/MM/DD,其中DD始终为01。例如 预期“日期” 01-01-1981 01-02-1982 . . . . . 01-12-2008 如果需要日期时间,请使用: 如果需要使用自定义格式,但datetimes格式丢失并获取字符串(对象): 如果由于某种原因,pd.to_datet

我的数据框中有一列名为“日期”,如下所示:

Date
Jan-1981
Feb-1981
Mar-1981
.
.
Sep-2005
.
Dec-2008
是否有办法将其转换为日期时间格式,以便默认格式为YYYY/MM/DD,其中DD始终为01。例如

预期“日期”

01-01-1981
01-02-1982
.
.
.
.
.
01-12-2008
如果需要日期时间,请使用:

如果需要使用自定义格式,但datetimes格式丢失并获取字符串(对象):


如果由于某种原因,
pd.to_datetime
不能直接解析日期(我曾经遇到过这样的情况,数据的日期格式是YYYYMMAA,没有任何分隔符),那么您可以先使用datetime.strtime,在您的情况下:

import datetime as dt


df['Date'] = pd.to_datetime(df['Date'].apply(lambda x: dt.strptime(x, '%b-%Y')))
注意:您仍然需要使用pd.to_datetime的原因是datetime和pandas的日期数据类型不同:

datetime.strtime返回一个
datetime
对象cf

pandas.to_datetime
返回
时间戳
datetime64
cf

df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%d-%m-%Y')

print (df)
         Date
0  01-01-1981
1  01-02-1981
2  01-03-1981
3  01-09-2005
4  01-12-2008
import datetime as dt


df['Date'] = pd.to_datetime(df['Date'].apply(lambda x: dt.strptime(x, '%b-%Y')))