Python 如何将不同的日期格式转换为一种
我的数据框在下面 我正在努力寻找年龄Python 如何将不同的日期格式转换为一种,python,pandas,Python,Pandas,我的数据框在下面 我正在努力寻找年龄 customer_Id DOB 0 268408 1970-02-01 1 268408 1970-02-01 2 268408 1970-02-01 3 268408 1970-02-01 4 268408 1970-02-01 形状为207518 转换数据时,我得到的值错误:未转换的数据保留:5 下面是要转换为年龄的代码 def cal_age(dob=str): x = dt.datetime.strptime(
customer_Id DOB
0 268408 1970-02-01
1 268408 1970-02-01
2 268408 1970-02-01
3 268408 1970-02-01
4 268408 1970-02-01
形状为207518
转换数据时,我得到的值错误:未转换的数据保留:5
下面是要转换为年龄的代码
def cal_age(dob=str):
x = dt.datetime.strptime(dob, "%Y-%d-%m")
y = dt.date.today()
age = y.year - x.year - ((y.month, x.day) < (y.month, x.day))
return age
试试这个代码
df['current_date']=pd.datetime.now()
df['age']=(df.current_date-pd.to_datetime(df.DOB)).dt.days/365
您可以更改使用datetimes的函数,也不需要转换为字符串:
def cal_age(x):
y = dt.date.today()
age = y.year - x.year - ((y.month, x.day) < (y.month, x.day))
return age
df_n_4['DOB'] = pd.to_datetime(df_n_4['DOB'],errors='coerce')
df_n_4['Age'] = df_n_4.DOB.apply(cal_age)
我猜您在DOB列中有一个无效的日期时间值,在处理如何克服这种情况之前,您必须先处理该值。如果date列具有不同类型的日期格式,我是否需要执行try except?您可以使用pd.to_datetime with errors='concurve'将无效的日期时间值转换为toNaT,但这可能会在从当前日期进行减法时产生问题,因此,您可能希望通过一些插补来处理缺少的值,或者按照您认为最好的方式删除它们。pd.to_datetimedf['DOB'],errors='concurve'。这取决于最终目标
def cal_age(x):
y = dt.date.today()
age = y.year - x.year - ((y.month, x.day) < (y.month, x.day))
return age
df_n_4['DOB'] = pd.to_datetime(df_n_4['DOB'],errors='coerce')
df_n_4['Age'] = df_n_4.DOB.apply(cal_age)