使用Python将日期时间对象舍入

时间:2019-08-16 10:19:23

标签: python pandas datetime

我正在尝试将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为止。

有没有一种简单的方法可以将其四舍五入,因为我没有运气找到答案。

为任何帮助喝彩

1 个答案:

答案 0 :(得分:3)

使用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