我试图在数据帧中将时间四舍五入到python中最接近的小时。
假设如果时间戳是2017-11-18 0:16,它应该作为2017-11-18 0:00出现,而2017-11-18 1:56应该四舍五入为2017-11-18 2:00
发布于 2018-02-23 06:45:02
我用jpp做了一点实验,但最终得到了一个不同的解决方案,因为在23小时添加一个小时会导致崩溃。
from datetime import datetime, timedelta
now = datetime.now()
def hour_rounder(t):
# Rounds to nearest hour by adding a timedelta hour if minute >= 30
return (t.replace(second=0, microsecond=0, minute=0, hour=t.hour)
+timedelta(hours=t.minute//30))
print(now)
print(hour_rounder(now))返回:
2018-02-22 23:42:43.352133
2018-02-23 00:00:00发布于 2018-02-23 06:04:33
这是一种方法。
from datetime import datetime
now = datetime.now()
def rounder(t):
if t.minute >= 30:
return t.replace(second=0, microsecond=0, minute=0, hour=t.hour+1)
else:
return t.replace(second=0, microsecond=0, minute=0)
now # 2018-02-22 22:03:53.831589
rounder(now) # 2018-02-22 22:00:00.000000发布于 2018-02-23 06:20:09
import pandas as pd
pd.Timestamp.now().round('60min').to_pydatetime()返回:
datetime.datetime(2018, 2, 23, 0, 0)https://stackoverflow.com/questions/48937900
复制相似问题