Python 按时间间隔对数据进行分组

Python 按时间间隔对数据进行分组,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有以下数据帧: 0 930 260.915508 2020-07-06 15:35:00 1 950 246.900944 2020-07-06 15:35:00 2 930 258.750335 2020-07-06 15:40:00 3 950 254.532348 2020-07-06 16:40:00 4 970 216.844755 2020-07-06 16:40:00 我有一个开始日期:2020-07-06 12:00

我有以下数据帧:

0      930  260.915508 2020-07-06 15:35:00
1      950  246.900944 2020-07-06 15:35:00
2      930  258.750335 2020-07-06 15:40:00
3      950  254.532348 2020-07-06 16:40:00
4      970  216.844755 2020-07-06 16:40:00
我有一个开始日期:
2020-07-06 12:00
。我需要从开始日期开始以四小时的时间间隔对我的熊猫数据帧进行分组,因此:
2020-07-06 12:00
2020-07-06 16:00
2020-07-06 20:00
等等

因此,我的数据帧的预期输出变成:

0      930  260.915508 2020-07-06 16:00:00
1      950  246.900944 2020-07-06 16:00:00
2      930  258.750335 2020-07-06 16:00:00
3      950  254.532348 2020-07-06 20:00:00
4      970  216.844755 2020-07-06 20:00:00
说明:如果数据框中的一行具有
datetime
15:35
,则新时间需要为
16:00
。如果时间为
16:01
,则新时间将变为
20:00


我不知道这是否仅适用于熊猫,恐怕我需要使用更多的代码来实现,但我首先想看看这里是否有人能够仅适用于熊猫。感谢您的任何建议。

您可以使用
dt.ceil

df['time_col'] = df['time_col'].dt.ceil('4H')
输出:

0  0  930  260.915508 2020-07-06 16:00:00
1  1  950  246.900944 2020-07-06 16:00:00
2  2  930  258.750335 2020-07-06 16:00:00
3  3  950  254.532348 2020-07-06 20:00:00
4  4  970  216.844755 2020-07-06 20:00:00
4H
间隔使用:

df['date'] = pd.to_datetime(df['date'])

df['date'] = df['date'].dt.ceil('4H')
print (df)
   col1        col2                date
0   930  260.915508 2020-07-06 16:00:00
1   950  246.900944 2020-07-06 16:00:00
2   930  258.750335 2020-07-06 16:00:00
3   950  254.532348 2020-07-06 20:00:00
4   970  216.844755 2020-07-06 20:00:00
编辑:对于按第一个日期添加小时,如果第一个日期时间是
2020-07-06 12:00
,因为添加了
12%4=0
0小时
0小时
,如果第一个日期时间是
2020-07-06 13:00
,因为添加了
12%4=1
,则可以按
4小时
提取小时数,并添加时间增量

df['date'] = pd.to_datetime(df['date'])

first = pd.Timedelta(df['date'].iat[0].hour % 4, unit='h')
print (first)

df['date'] = df['date'].dt.ceil('4H') + first

非常感谢你的回答!但是有没有办法指定从哪个日期开始计算4小时间隔?例如,如果我将时间设置为13:00,则间隔将为17:00>21:00,依此类推on@San9096-增加了解决方案。太棒了!多谢各位!我想出了另一个解决方案,但这更有效、更简单。谢谢!你知道有没有办法设置开始时间,从开始时间开始计算四个小时的间隔?例如,如果我设置13:00,它将是13:00>17:00>21:00;如果我设置11:00,它将是15:00>19:00>23:00