0

我有一列 datetime64[ns] 格式的用户 DOB 数据,并想计算他们当前的年龄。每次我解析这个日期并尝试用当前日期减去相同的日期时,都会引发 str 和 datetime 数据格式无效的错误。

from datetime import datetime
main_file['AD_DOB'] = pd.to_datetime(main_file['AD_DOB']).dt.date ##10/2/1943
now = datetime.now().strftime("%H:%M:%S")
main_file['Age'] = ((now - main_file['AD_DOB'])/365).dt.days

错误:TypeError:不支持的操作数类型 -:'str' 和 'datetime.date'

4

3 回答 3

1

这是因为datetime.now().strftime("%H:%M:%S")返回一个字符串对象

下面应该工作:

now = datetime.now()
main_file['Age'] = (now - main_file['AD_DOB']).days/365.0
于 2019-12-11T05:38:05.860 回答
1

试试这个

from datetime import datetime
main_file['AD_DOB'] = pd.to_datetime(main_file['AD_DOB']).dt.date ##10/2/1943
now = datetime.datetime.now()
main_file['Age'] = ((now - main_file['AD_DOB'])/365).dt.days
于 2019-12-11T05:38:44.867 回答
0

对于 pandas 中的减法,必须将值转换为日期时间,如果要删除时间,请使用for Series.dt.floorcolumnAD_DOB和 for :nowTimestamp.floor

main_file = pd.DataFrame({'AD_DOB':['10/2/1943','10/8/1946','10/12/1983']})
main_file['AD_DOB'] = pd.to_datetime(main_file['AD_DOB']).dt.floor('d')
now = pd.to_datetime('now').floor('d')
main_file['Age'] = ((now - main_file['AD_DOB'])/365).dt.days
print (main_file)
      AD_DOB  Age
0 1943-10-02   76
1 1946-10-08   73
2 1983-10-12   36
于 2019-12-11T05:38:59.290 回答