我的列中包含'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__'
即使字段中的值是整数!
答案 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)