如何在熊猫中四舍五入日期和时间



我有一个数据帧,在csv文件中有许多列和行,我的一列是pickup_datetime,我正在尝试对日期时间进行舍入以计算值。

Pickup_Datetime         Dropoff_Datetime
2018-01-01 00:00:20     2018-01-01 00:06:44
2018-01-01 00:00:23     2018-01-01 00:31:12
.
.
.
2018-01-31 23:59:43     2018-02-01 00:21:01
2018-01-31 23:59:50     2018-02-01 00:21:43

我已经尝试了不同的路径来更改类型,但仍然给我一条错误消息

df = data.round["H"]
df

Typeerror: decimals must be an integer, a dict-like or a Series

df['Pickup_Datetime'] = df['Pickup_Datetime'].values.astype(int)
df['Pickup_Datetime'] = df['Pickup_Datetime'].apply(Decimal)

我期望输出:

Pickup_Datetime
2018-01-31 00:00:00
2018-01-31 01:00:00
2018-01-31 02:00:00
.
.
.
.

为了舍入日期时间,请使用日期时间序列的.dt访问器

df['Pickup_Datetime'] = df['Pickup_Datetime'].dt.round(freq='1H')

编辑:参考其他答案,简单得多

您是否尝试过将每个日期时间转换为纪元,将其除以 3600(一小时中的秒数(,然后将其乘以 3600,然后将其转换回日期时间?

纪元实际上是自 1970-01-01 00:00:00 以来的秒数

一些可以做到这一点的代码(不确定如何使用数据帧集成(:

datetime.datetime.fromtimestamp(round((df['Pickup_Datetime'].apply(strftime,format='%s').apply(int)/3600)*3600)

可能需要进行调整以遵守 PEP8 标准;)

附言如果数据帧将日期时间作为字符串拾取,则必须首先使用 datetime.strptime(format( 将其转换为日期时间对象,文档在这里

最新更新