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

我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支持精度规格,以便在处理日常数据时可以省去时间部分?


杨魅力
浏览 4834回答 3
3回答

慕桂英3389331

尽管我赞成EdChum的答案,这是对OP提出的问题的最直接答案,但它并不能真正解决性能问题(它仍然依赖于python datetime对象,因此对它们的任何操作都不会被矢量化-即,它会很慢)。性能更好的替代方法是使用df['dates'].dt.floor('d')。严格来说,它不会“仅保留日期部分”,因为它只是将时间设置为00:00:00。但是它确实可以满足OP的要求,例如:打印到屏幕保存到csv使用列来 groupby...并且效率更高,因为该操作已矢量化。编辑:其实,在OP的宁愿答案很可能是“的最新版本pandas也没有写入到csv,如果它是时间00:00:00的所有观测值”。

扬帆大鱼

熊猫,DatetimeIndex并Series有一个称为的方法normalize可以完全满足您的需求。您可以在此答案中了解更多信息。可以用作 ser.dt.normalize()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python