【问题标题】:How to extract hour, day of the week from categorical data?如何从分类数据中提取小时、星期几?
【发布时间】:2021-01-06 09:41:41
【问题描述】:

我有这样的数据(这是一个时间序列问题):

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

【问题讨论】:

  • data.index = pd.to_datetime(data.index)

标签: python pandas dataframe datetime time-series


【解决方案1】:

详细说明@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()

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 2023-01-03
    • 2021-12-01
    相关资源
    最近更新 更多