我试图在 Python 中向下舍入一个 datetime
对象,但遇到了一些问题。这里有很多关于舍入 datetime
的内容,但我找不到任何符合我需要的内容。
我正在尝试获取 15 分钟间隔的日期范围,以 .now()
为终点。为了得到我的 end=
我这样做:
pd.Timestamp.now().round('15min')
返回:
2019-08-16 11:15:00
这正是我想要的,但是,如果我在 11:23 运行它,它会返回给我 2019-08- 16 11:30:00
,这实际上不是我想要的,我希望它向下舍入到 2019-08-16 11:15:00
,直到我们击中 11 :30.
是否有一种简单的方法可以将其四舍五入,因为如果是的话,我还没有找到答案。
为任何帮助干杯
最佳答案
使用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
关于python - 在 Python 中向下舍入日期时间对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57522916/