假设您的示例中有日期格式,下面将从使用您的时间戳生成的DateTime对象生成一周中的小时:
from datetime import datetime
timestamp = '2/19/2019 17:33'
timestamp_object = datetime.strptime(timestamp, '%m/%d/%Y %H:%M')
hour_of_week = (timestamp_object.timetuple().tm_wday * 24 + 24) - (24 - timestamp_object.timetuple().tm_hour)
print('Hour of the week: {}'.format(hour_of_week))
输出:
Hour of the week: 41
这将为您提供在上下文中应用所需的工具。像这样:
df['Date'] = df['Date'].apply(pd.to_datetime)
df['Hour of Week'] = ((df['Date'].dt.dayofweek) * 24 + 24) - (24 - df['Date'].dt.hour)
df['Day of Week'] = df['Date'].dt.dayofweek
df['Hour of Day'] = df['Date'].dt.hour
df = df[['Date', 'Day of Week', 'Hour of Day', 'Hour of Week', 'Price of X', 'Price of Y']]
请注意,如果您确实希望从1小时开始一天,而不是从零开始,则需要执行以下操作:
df['Hour of Week'] = ((df['Date'].dt.dayofweek) * 24 + 24) - (24 - df['Date'].dt.hour) + 1
和
df['Hour of Day'] = df['Date'].dt.hour + 1
以免混淆。
就像下面要抵消的第一天
1
:
df['Day of Week'] = df['Date'].dt.dayofweek + 1
只要记住
Hour of Day
价值
df['Date'].dt.hour
开始于
0
当你做比较的时候。因此,我建议使用
零
作为你的标准。同样适用于
Day of Week
.
用
Hour of Week
开始于
零
,您的数据帧如下所示:
Date Day of Week Hour of Day Hour of Week Price of X Price of Y
0 2011-01-01 00:30:00 5 0 120 19 172
1 2011-01-01 01:00:00 5 1 121 98 105
2 2011-01-01 01:30:00 5 1 121 40 -6
3 2011-01-01 02:00:00 5 2 122 68 120
4 2011-01-01 02:30:00 5 2 122 16 182
5 2011-01-01 03:00:00 5 3 123 23 187
6 2011-01-01 03:30:00 5 3 123 94 200
7 2019-02-18 00:01:00 0 0 0 23 187
8 2019-02-18 23:15:00 0 23 23 23 187
9 2019-02-24 23:59:00 6 23 167 23 187
天和小时增加1:
df['Hour of Week'] = ((df['Date'].dt.dayofweek) * 24 + 24) - (24 - df['Date'].dt.hour) + 1
df['Day of Week'] = df['Date'].dt.dayofweek + 1
df['Hour of Day'] = df['Date'].dt.hour + 1
你得到:
Date Day of Week Hour of Day Hour of Week Price of X Price of Y
0 2011-01-01 00:30:00 6 1 121 19 172
1 2011-01-01 01:00:00 6 2 122 98 105
2 2011-01-01 01:30:00 6 2 122 40 -6
3 2011-01-01 02:00:00 6 3 123 68 120
4 2011-01-01 02:30:00 6 3 123 16 182
5 2011-01-01 03:00:00 6 4 124 23 187
6 2011-01-01 03:30:00 6 4 124 94 200
7 2019-02-18 00:01:00 1 1 1 23 187
8 2019-02-18 23:15:00 1 24 24 23 187
9 2019-02-24 23:59:00 7 24 168 23 187