【问题标题】:How to convert a pandas series into datetime type?如何将熊猫系列转换为日期时间类型?
【发布时间】:2020-07-14 08:48:47
【问题描述】:

我阅读了一些与该主题相关的帖子,但没有任何效果。

我正在尝试转换为名为 dem_inclusiondate 和 sae_hospit_date 的数据框列,因为我需要进行生存分析,并且需要包含日期和住院之间的持续时间

但是,这些列的类型是系列,我找不到将它们转换为日期类型的方法。

我在你的评论之后尝试了这个

  baseline_all_patients["dem_inclusiondate"]
    .to_datetime(baseline_all_patients["dem_inclusiondate"], format="%Y-%m-%d")

但出现此错误:'Series' object has no attribute 'to_datetime'

对不起,我是新手,我不知道我的问题是否清楚

感谢您的帮助。

【问题讨论】:

  • stackoverflow.com/questions/20109391/… 我会查看df['col'] = pd.to_datetime(df['col']),其中 df 是您的数据框,col 是您的列名。
  • 试试df['dem_inclusiondate'] = pd.to_datetime(df['dem_inclusiondate']),否则根据上面的链接编辑您的问题。
  • 您的代码与 cmets 中的代码不同。请再次检查。

标签: pandas date series survival-analysis


【解决方案1】:

我相信这应该会有所帮助。让我们生成一些数据。

df = pd.DataFrame({'date_begin':['2020.6.7', '2020.5.3', '2020.1.1'],
                   'date_end':['2020.6.17', '2020.6.1', '2020.1.20']})

那么在 pandas 中转换 stings 的语法就很简单了。在Documentation中查看更多信息

df['date_begin'] = pd.to_datetime(df['date_begin'], yearfirst=True)
df['date_end']   = pd.to_datetime(df['date_end'],   yearfirst=True)

现在 timeDeltas 可能会给您带来一些问题。那是因为月份和年份的长度不同。根据您需要的准确度,您可能需要使用 Numpy (np) timedelta 或 pandas 自己的 timedelta。

(df['date_end'] - df['date_begin']) / pd.Timedelta('1 days') 
(df['date_end'] - df['date_begin']) / np.timedelta64(1, 'D')
(df['date_end'] - df['date_begin']) / np.timedelta64(1, 'M')
(df['date_end'] - df['date_begin']) / np.timedelta64(1, 'Y')

【讨论】:

  • 哇...你预料到我会在 timedeltas 上出现的问题...这是真的,我遇到了这个问题,但感谢你,我可以解决它!!!非常感谢!!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 2018-12-08
  • 1970-01-01
  • 2017-08-24
  • 2017-08-05
相关资源
最近更新 更多