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