【问题标题】:Convert pandas datetime time difference values from days to years将 pandas 日期时间时差值从天转换为年
【发布时间】:2019-02-27 09:36:04
【问题描述】:

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

为了从 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: cannot cast unit 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'

有什么建议吗? 提前致谢。

【问题讨论】:

标签: python pandas date datetime


【解决方案1】:

我认为减法的输出是一个 timedelta 系列。在这种情况下,您可以使用以下方式对其进行转换。

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

您可以阅读更多关于它的信息here

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 2021-02-06
    • 2023-03-17
    • 1970-01-01
    相关资源
    最近更新 更多