如何将return datetime 分组的时间段分类成新的pandas 列?
How to return datetime group of categorised period into a new pandas column?
我有一个 pandas 数据框,如下所示:
Date Interval
31/8/20 9:22:07 Period 1
31/8/20 7:20:35 Period 9
31/8/20 7:18:24 Period 9
31/8/20 7:13:49 Period 10
31/8/20 7:07:05 Period 10
31/8/20 6:46:54 Period 11
31/8/20 0:26:16 Period 37
30/8/20 23:52:20 Period 39
30/8/20 23:50:04 Period 39
由以下代码生成:
# CONVERT TO DATETIME
df['Date'] = pd.to_datetime(df['Date'])
# SORT BY DATE VALUES
df = df.sort_values(by=['Date'], ascending=False)
# GROUP INTO 15 MINUTE INTERVALS
s = df.groupby(pd.Grouper(freq='15min', key='Date')).ngroup(ascending=False).add(1)
df['Interval'] = 'Period ' + s.astype(str)
我想在我的数据框中添加一个新列以显示生成 'Period' 值的日期时间间隔。这样我的输出应该是这样的:
Date Interval 15_Min_Interval_Period_Belongs_To
31/8/20 9:22:07 Period 1 31/8/20 9:15:00
31/8/20 7:20:35 Period 9 31/8/20 7:15:00
31/8/20 7:18:24 Period 9 31/8/20 7:15:00
31/8/20 7:13:49 Period 10 31/8/20 7:00:00
31/8/20 7:07:05 Period 10 31/8/20 7:00:00
31/8/20 6:46:54 Period 11 31/8/20 6:45:00
31/8/20 0:26:16 Period 37 31/8/20 0:15:00
30/8/20 23:52:20 Period 39 30/8/20 23:45:00
30/8/20 23:50:04 Period 39 30/8/20 23:45:00
我试过:
s2 = df.groupby(pd.Grouper(freq='15min', key='Interval')).get_group()
无果。
感谢您的帮助。
df['15_Min_Interval_Period_Belongs_To'] = df['Date'].dt.floor('15Min')
print (df)
Date Interval 15_Min_Interval_Period_Belongs_To
0 2020-08-31 09:22:07 Period 1 2020-08-31 09:15:00
1 2020-08-31 07:20:35 Period 9 2020-08-31 07:15:00
2 2020-08-31 07:18:24 Period 9 2020-08-31 07:15:00
3 2020-08-31 07:13:49 Period 10 2020-08-31 07:00:00
4 2020-08-31 07:07:05 Period 10 2020-08-31 07:00:00
5 2020-08-31 06:46:54 Period 11 2020-08-31 06:45:00
6 2020-08-31 00:26:16 Period 37 2020-08-31 00:15:00
7 2020-08-30 23:52:20 Period 39 2020-08-30 23:45:00
8 2020-08-30 23:50:04 Period 39 2020-08-30 23:45:00
我有一个 pandas 数据框,如下所示:
Date Interval
31/8/20 9:22:07 Period 1
31/8/20 7:20:35 Period 9
31/8/20 7:18:24 Period 9
31/8/20 7:13:49 Period 10
31/8/20 7:07:05 Period 10
31/8/20 6:46:54 Period 11
31/8/20 0:26:16 Period 37
30/8/20 23:52:20 Period 39
30/8/20 23:50:04 Period 39
由以下代码生成:
# CONVERT TO DATETIME
df['Date'] = pd.to_datetime(df['Date'])
# SORT BY DATE VALUES
df = df.sort_values(by=['Date'], ascending=False)
# GROUP INTO 15 MINUTE INTERVALS
s = df.groupby(pd.Grouper(freq='15min', key='Date')).ngroup(ascending=False).add(1)
df['Interval'] = 'Period ' + s.astype(str)
我想在我的数据框中添加一个新列以显示生成 'Period' 值的日期时间间隔。这样我的输出应该是这样的:
Date Interval 15_Min_Interval_Period_Belongs_To
31/8/20 9:22:07 Period 1 31/8/20 9:15:00
31/8/20 7:20:35 Period 9 31/8/20 7:15:00
31/8/20 7:18:24 Period 9 31/8/20 7:15:00
31/8/20 7:13:49 Period 10 31/8/20 7:00:00
31/8/20 7:07:05 Period 10 31/8/20 7:00:00
31/8/20 6:46:54 Period 11 31/8/20 6:45:00
31/8/20 0:26:16 Period 37 31/8/20 0:15:00
30/8/20 23:52:20 Period 39 30/8/20 23:45:00
30/8/20 23:50:04 Period 39 30/8/20 23:45:00
我试过:
s2 = df.groupby(pd.Grouper(freq='15min', key='Interval')).get_group()
无果。
感谢您的帮助。
df['15_Min_Interval_Period_Belongs_To'] = df['Date'].dt.floor('15Min')
print (df)
Date Interval 15_Min_Interval_Period_Belongs_To
0 2020-08-31 09:22:07 Period 1 2020-08-31 09:15:00
1 2020-08-31 07:20:35 Period 9 2020-08-31 07:15:00
2 2020-08-31 07:18:24 Period 9 2020-08-31 07:15:00
3 2020-08-31 07:13:49 Period 10 2020-08-31 07:00:00
4 2020-08-31 07:07:05 Period 10 2020-08-31 07:00:00
5 2020-08-31 06:46:54 Period 11 2020-08-31 06:45:00
6 2020-08-31 00:26:16 Period 37 2020-08-31 00:15:00
7 2020-08-30 23:52:20 Period 39 2020-08-30 23:45:00
8 2020-08-30 23:50:04 Period 39 2020-08-30 23:45:00