在列之间进行数学运算的Pandas DateTime转换

时间:2018-11-12 15:34:40

标签: python pandas datetime

我有一个由不同列组成的DataFrame:我有两列是“出生日期”和“谋杀日期”。

出生日期如下:     enter image description here

谋杀日期看起来像:     enter image description here

我希望能够从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

1 个答案:

答案 0 :(得分:2)

如果DOM和DOB是日期时间类型,那么这应该可以完成工作:

df['Age'] = df.DOM - df.DOB

如果数据类型不是日期时间,则通过

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