我正在尝试通过最小入数和出生日期列计算总年龄。 我试过了:
patient_admission['minadmit'] = pd.to_datetime(patient_admission['minadmit'], infer_datetime_format=True)
patient_admission['DOB'] = pd.to_datetime(patient_admission['DOB'], infer_datetime_format=True)
print("*******************")
print(patient_admission['minadmit'])
print("*******************")
print(patient_admission['DOB'])
这就是结果:
*******************
0 2149-12-17 20:41:00
1 2149-12-17 20:41:00
2 2149-12-17 20:41:00
3 2188-11-12 09:22:00
4 2110-07-27 06:46:00
...
58971 2111-09-30 12:04:00
58972 2161-07-15 12:00:00
58973 2135-01-06 07:15:00
58974 2129-01-03 07:15:00
58975 2149-06-08 15:21:00
Name: minadmit, Length: 58976, dtype: datetime64[ns]
*******************
0 2075-03-13
1 2075-03-13
2 2075-03-13
3 2164-12-27
4 2090-03-15
...
58971 2026-05-25
58972 2124-07-27
58973 2049-11-26
58974 2076-07-25
58975 2098-07-25
Name: DOB, Length: 58976, dtype: datetime64[ns]
之后,我只写这个:
patient_admission['age'] = list(map(lambda x: x.days , (patient_admission['minadmit'] - patient_admission['DOB'])/365.242 ))
我遇到此错误:
raise OverflowError(“ int64加法中的溢出”)OverflowError:int64加法中的溢出
此错误的原因是什么,我该如何解决。
答案 0 :(得分:0)
尝试一下
patient_admission['date_of_admission'] = pd.to_datetime(patient_admission['date_of_admission']).dt.date
patient_admission['DOB'] = pd.to_datetime(patient_admission['DOB']).dt.date
不确定是否会解决此问题,但您可能需要在lambda函数中使用x.dt.days