我正在尝试转换包含表示日期的字符串的字段。我开始使用以下代码,首先确保值是一个字符串,然后将其转换为字符串.......所有你可能想到的好!? (字符串格式为yyyymmdd
)
def dateconvert(Start_date):
Date_String = str(Start_date)
dateconv = dt.datetime.strptime(Date_String, '%Y%m%d').strftime('%d/%m/%Y')
return dateconv
df['Newdates'] = df['Start_Date'].apply(dateconvert)
然而,这给了我一个错误,说明了以下内容;
ValueError: unconverted data remains: .0
我假设这可能是因为我所加入的值是浮点数所以我添加了以下内容;
def dateconvert(Start_date):
Start_date = int(Start_date)
Date_String = str(Start_date)
dateconv = dt.datetime.strptime(Date_String, '%Y%m%d').strftime('%d/%m/%Y')
return dateconv
df['Newdates'] = df['Start_Date'].apply(dateconvert)
然而,这给了我
ValueError: cannot convert float NaN to integer
由于此特定字段中存在Null
个值。
因此,我尝试了以下内容,但仍然遇到与以前相同的错误!
def dateconvert(Start_date):
if Start_date is not None:
Start_date = int(Start_date)
Date_String = str(Start_date)
dateconv = dt.datetime.strptime(Date_String, '%Y%m%d').strftime('%d/%m/%Y')
return dateconv
df['Newdates'] = df['Start_Date'].apply(dateconvert)
我唯一想做的就是将此字符串转换为日期,跳过空值。
感谢。
答案 0 :(得分:1)
可以使用try / catch。
def dateconvert(Start_date):
try:
Start_date = int(Start_date)
Date_String = str(Start_date)
dateconv = dt.datetime.strptime(Date_String, '%Y%m%d').strftime('%d/%m/%Y')
return dateconv
except ValueError:
return Start_date #or '' or whatever you want to return for NULL