Python 使用Math在列之间进行日期时间转换

Python 使用Math在列之间进行日期时间转换,python,pandas,datetime,Python,Pandas,Datetime,我有一个由不同列组成的数据框架:我有两列是“出生日期”和“谋杀日期” 出生日期如下: 谋杀日期如下: 我希望能够从DOM列中减去DOB列中的每一行,这样我就可以得到某人谋杀时的年龄。有什么办法吗? 现在,它似乎正在发挥作用(大部分)。我做了以下编辑: df_1['Date of birth'] = pd.to_datetime(df_1['Date of birth'], errors = 'coerce') df_1['Date of Murder revised']

我有一个由不同列组成的数据框架:我有两列是“出生日期”和“谋杀日期”

出生日期如下:

谋杀日期如下:

我希望能够从DOM列中减去DOB列中的每一行,这样我就可以得到某人谋杀时的年龄。有什么办法吗? 现在,它似乎正在发挥作用(大部分)。我做了以下编辑:

df_1['Date of birth'] = pd.to_datetime(df_1['Date of birth'], 
  errors 
  = 
  'coerce')
  df_1['Date of Murder revised'] = pd.to_datetime(df_1['Date of 
  Murder 
  revised'], errors = 'coerce')
  df_1['Date at Murder'] = (df_1['Date of birth'] - df_1['Date of 
  Murder 
  revised']) 
  print(df_1['Date at Murder'].head(10))
这将为m提供以下输出: 0-12395天 1-9941天 2-7651天 3纳特 4-9313天 5-9184天

I would however like to get years, but when I do the same code above 
like so:

df_1['Date at Murder'] = (df_1['Date of birth'] - df_1['Date of 
Murder revised']) / 365.25

I get this output: 
0   -34 days +01:32:38.932238
1   -28 days +18:47:33.388090
2   -21 days +01:15:53.593429
3                         NaT
4   -26 days +12:03:26.981519

如果DOM和DOB是datetime类型,则应执行以下操作:

df['Age'] = df.DOM - df.DOB
如果数据类型不是datetime,则通过

df.DOM = pandas.to_datetime(df.DOM)
df.DOB = pandas.to_datetime(df.DOB)
df['Age'] = (df.DOM - df.DOB).dt.days/365.25

谢谢你的回复。问题是,尽管已将两列都转换为datetime对象,但仍出现以下回溯错误。TypeError:-:“str”和“str”的操作数类型不受支持。此错误表示列仍然是字符串,而不是datetime。你能检查一下df.dtypes的输出吗?它说两列都是对象,这让我很困惑,因为我认为date\u of_birth=pd。to\u datetime(date\u of_birth,errors='concurve')已经解决了这个问题,你能把你的代码添加到问题中吗。这将有助于发现问题。此外,如果我包括“.days”,我将获得一个AttributeError:“Series”对象没有属性“days”