使用 pandas.to_datetime 时只保留日期部分

新手上路,请多包涵

我使用 pandas.to_datetime 来解析我的数据中的日期。默认情况下,Pandas 表示日期为 datetime64[ns] 即使日期都是每天的。我想知道是否有一种优雅/聪明的方法将日期转换为 datetime.datedatetime64[D] 这样,当我将数据写入 CSV 时,日期不会附加 00:00:00 。我知道我可以逐个元素手动转换类型:

 [dt.to_datetime().date() for dt in df.dates]

但这真的很慢,因为我有很多行,而且有点违背了使用 pandas.to_datetime 的目的。有没有办法一次转换整个列的 dtype ?或者, pandas.to_datetime 支持精度规范,以便我可以在处理日常数据时摆脱时间部分?

原文由 user1642513 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 745
1 个回答

由于版本 0.15.0 现在可以使用 .dt 轻松完成访问日期组件:

 df['just_date'] = df['dates'].dt.date

上面返回一个 datetime.date ,如果你想要一个 datetime64 那么你可以只 normalize 时间分量设置为午夜 00:00:00 所以它将所有值设置为午夜 --- :

 df['normalised_date'] = df['dates'].dt.normalize()

这使 dtype 保持为 datetime64 ,但显示仅显示 date 值。

原文由 EdChum 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题