将熊猫日期时间差值从天转换为年

时间:2019-02-27 01:19:06

标签: python pandas date datetime

我有一个通过从csv文件导入日期值而创建的datetime值(事件的日期)。然后,我尝试通过从出生日期的日期时间中减去事件的日期时间来计算该人的年龄。这几天就给了我一个答案-但几年后就想得到它。

要从excel csv文件导入数据,我使用了以下方法:

Patients = pandas.read_csv("Patients_SN.csv", parse_dates=True) 
Patients['dateofbirth'] = pandas.to_datetime(Patients['dateofbirth'], format='%d/%m/%Y')

然后我将患者数据与另一个名为“ Transitions3”的(事件)数据集合并,以便每个事件在“ dateofbirth”列中都有该人的出生日期。

我已经可以使用以下方法获得一个数字(以天为单位),该数字表示活动发生时的年龄:

Transitions3['AgeAtFirstEvent']=(Transitions3['FirstEventDate']-Transitions3['dateofbirth'])

正如我所说-这几天就给了我答案

1782 days 00:00:00.000000000
  • 但我希望在几年内(以及几年的分数,例如45.5年)。

我尝试使用以下代码将其更改为年份

Transitions3['AgeAtFirstDial']= pandas.to_datetime(Transitions3['AgeAtFirstDial'], unit="y")

但是我得到这个错误: ValueError:无法转换y

也尝试过:

Transitions3['Age1stDial']=Transitions3['AgeAtFirstDial'].total_years()

但是我明白了:

Traceback (most recent call last):

  File "<ipython-input-22-3dc3b7338471>", line 1, in <module>
    Transitions3['Age1stDial']=Transitions3['AgeAtFirstDial'].total_years()

  File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py", line 4376, in __getattr__
    return object.__getattribute__(self, name)

AttributeError: 'Series' object has no attribute 'total_years'

有什么建议吗? 预先感谢。

1 个答案:

答案 0 :(得分:0)

我认为减法的输出是一个timedelta序列。在这种情况下,您可以使用以下内容进行转换。

Transitions3['AgeAtFirstEvent'] / np.timedelta64(1, 'Y')

您可以详细了解here