使用Python和datetime将字符串转换为日期

时间:2017-09-05 13:39:54

标签: python datetime

我的列中包含'yyyymmdd'形式的叮咬,如下所示;

Start_date
20081201
20120823
20101210

我希望能够将这些转换为实际日期,并且正在考虑使用datetime。通过在线查看,我设法定义了以下两个功能。

def dateconvert(Start_date):
    dateconv = datetime.strptime(Start_date, '%Y%m%d').strftime('%m/%d/%Y')
    return  dateconv

def get_datetime(date_string):
    newdate = datetime.date(date_string[:3],date_string[4:6],date_string[6:8])
    return newdate

然后我尝试使用apply功能将其应用于下面

 Dates['Newdates'] = Dates['Start_date'].apply(get_datetime)

但是我一直收到以下错误

TypeError: 'long' object has no attribute '__getitem__'

即使字段中的值是整数!

2 个答案:

答案 0 :(得分:2)

您需要先将日期转换为字符串。

import datetime as dt
dt.datetime.strptime(str(20081201), '%Y%m%d').strftime('%m/%d/%Y')

将返回

'12/01/2008'

答案 1 :(得分:0)

我使用的完整解决方案如下

import datetime as dt

def dateconvert(Start_date):
    Date_String = str(Start_date)
    dateconv = dt.datetime.strptime(Date_String, '%Y%m%d').strftime('%m/%d/%Y')
    return  dateconv

Dates['Newdates'] = Dates['Start_date'].apply(dateconvert)