为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2019-10-25 10:00:39
我pandas.to_datetime用来解析数据中的日期。默认情况下,熊猫代表日期,datetime64[ns]即使日期全是每天。我想知道是否存在一种优雅/巧妙的方法来将日期转换为datetime.date或,datetime64[D]以便当我将数据写入CSV时,日期不附加00:00:00。我知道我可以逐个元素手动转换类型:[dt.to_datetime().date() for dt in df.dates]但这确实很慢,因为我有很多行,这有点违反了使用目的pandas.to_datetime。有没有一种方法可以一次转换dtype整个列?或者,是否pandas.to_datetime支持精度规格,以便在处理日常数据时可以省去时间部分?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

尽管我赞成EdChum的答案,这是对OP提出的问题的最直接答案,但它并不能真正解决性能问题(它仍然依赖于python datetime对象,因此对它们的任何操作都不会被矢量化-即,它会很慢)。

性能更好的替代方法是使用df['dates'].dt.floor('d')。严格来说,它不会“仅保留日期部分”,因为它只是将时间设置为00:00:00。但是它确实可以满足OP的要求,例如:

  • 打印到屏幕

  • 保存到csv

  • 使用列来 groupby

...并且效率更高,因为该操作已矢量化。

编辑:其实,在OP的宁愿答案很可能是“的最新版本pandas没有写入到csv,如果它是时间00:00:00的所有观测值”。


查看完整回答
反对 回复 2019-10-25
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

熊猫,DatetimeIndex并Series有一个称为的方法normalize可以完全满足您的需求。


您可以在此答案中了解更多信息。


可以用作 ser.dt.normalize()


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 4829 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信