[英]Extract day of the week and hour from iso datetime stamp in Python
[英]How to extract hour, day of the week from categorical data?
我有这样的数据(这是一个时间序列问题):
Time y
2017-01-01 00:00:00 34002
2017-01-01 01:00:00 37947
2017-01-01 02:00:00 41517
2017-01-01 03:00:00 44476
2017-01-01 04:00:00 46234
我想提取小时、星期几和休息日作为分类变量,但不知何故它不起作用:
data = pd.DataFrame(dataset)
data.columns = ["y"]
data.index = pd.to_datetime(data)
data["hour"] = data.index.hour
data["weekday"] = data.index.weekday
data['is_weekend'] = data.weekday.isin([5,6])*1
data.head()
Python抛出以下错误,我不知道该怎么办:
2 data.columns = ["y"]
3
----> 4 data.index = pd.to_datetime(data)
5 data["hour"] = data.index.hour
6 data["weekday"] = data.index.weekday
ValueError: to assemble mappings requires at least that [year, month, day] be specified: [day,month,year] is missing
详细说明@MrFruppes 评论中包含的答案:
这里的问题是我们试图将 DataFrame 数据转换为datetime
对象,而不是将 DataFrame 的索引转换为datetime
对象。
可以使用.index
属性访问 DataFrame 的索引。 将这些值输入.to_datetime()
方法并将输出分配给data.index
允许我们用已转换为datetime
对象的新值覆盖原始值。
import pandas as pd
data = pd.DataFrame(dataset)
data.columns = ['y']
在这里,我们访问.index
并对其进行转换。
data.index = pd.to_datetime(data.index)
data["hour"] = data.index.hour
data["weekday"] = data.index.weekday
data['is_weekend'] = data.weekday.isin([5,6])*1
data.head()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.