我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
的所有观测值”。
扬帆大鱼
TA贡献1799条经验 获得超9个赞
熊猫,DatetimeIndex并Series有一个称为的方法normalize可以完全满足您的需求。
您可以在此答案中了解更多信息。
可以用作 ser.dt.normalize()
添加回答
举报
0/150
提交
取消