Py学习  »  Python

在python中向下取整datetime对象

top bantz • 5 年前 • 1902 次点击  

我想绕A圈 datetime 对象在python中,有一些问题。这里有很多关于舍入的内容 日期时间 但我找不到任何适合我需要的东西。

我想知道15分钟的时间间隔, .now() 作为终点。为了得到我的 end= 我愿意:

pd.Timestamp.now().round('15min')

返回:

2019-08-16 11:15:00 这正是我想要的,但是,如果我在11:23运行这个,它会返回我 2019-08-16 11:30:00 实际上这不是我想要的,我想把它四舍五入到 2019年8月16日11:15:00 直到我们11:30罢工。

有没有一个简单的方法可以让它四舍五入,因为我没有任何运气找到答案,如果是这样的话。

为任何帮助干杯

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38208
 
1902 次点击  
文章 [ 1 ]  |  最新文章 5 年前
jezrael
Reply   •   1 楼
jezrael    5 年前

使用 Timestamp.floor :

print (pd.Timestamp('2019-08-16 11:15:00').floor('15min'))
2019-08-16 11:15:00
print (pd.Timestamp('2019-08-16 11:23:00').floor('15min'))
2019-08-16 11:15:00
print (pd.Timestamp('2019-08-16 11:30:00').floor('15min'))
2019-08-16 11:30:00

用于测试:

df = pd.DataFrame({'dates':pd.date_range('2009-01-01', freq='T', periods=20)})

df['new'] = df['dates'].dt.floor('15min')
print (df)

0  2009-01-01 00:00:00 2009-01-01 00:00:00
1  2009-01-01 00:01:00 2009-01-01 00:00:00
2  2009-01-01 00:02:00 2009-01-01 00:00:00
3  2009-01-01 00:03:00 2009-01-01 00:00:00
4  2009-01-01 00:04:00 2009-01-01 00:00:00
5  2009-01-01 00:05:00 2009-01-01 00:00:00
6  2009-01-01 00:06:00 2009-01-01 00:00:00
7  2009-01-01 00:07:00 2009-01-01 00:00:00
8  2009-01-01 00:08:00 2009-01-01 00:00:00
9  2009-01-01 00:09:00 2009-01-01 00:00:00
10 2009-01-01 00:10:00 2009-01-01 00:00:00
11 2009-01-01 00:11:00 2009-01-01 00:00:00
12 2009-01-01 00:12:00 2009-01-01 00:00:00
13 2009-01-01 00:13:00 2009-01-01 00:00:00
14 2009-01-01 00:14:00 2009-01-01 00:00:00
15 2009-01-01 00:15:00 2009-01-01 00:15:00
16 2009-01-01 00:16:00 2009-01-01 00:15:00
17 2009-01-01 00:17:00 2009-01-01 00:15:00
18 2009-01-01 00:18:00 2009-01-01 00:15:00
19 2009-01-01 00:19:00 2009-01-01 00:15:00