【问题标题】:how to I use the .dt.hour accessor to get hours from a datetime object?如何使用 .dt.hour 访问器从 datetime 对象中获取小时数?
【发布时间】:2021-12-24 05:21:34
【问题描述】:

我有一个数据框,我试图将其分成小时和天,因此我可以将“一天中的小时”用作 (1,2,3,...,22,23,24) 作为 ID 变量一个项目。

我在将.dt.hour 投射到我的日期列时遇到问题,它吐出:

AttributeError: Can only use .dt accessor with datetimelike values

目前,我的日期格式是: YYYY-MM-DD HH:MM:SS+00:00,我假设错误出现在 00:00

这是数据框的示例:

    date                        btc_open            btc_close
0   2021-01-01 00:00:00+00:00   28905.984003808422  29013.059128535537
1   2021-01-01 01:00:00+00:00   29016.129189426065  29432.828723553906
2   2021-01-01 02:00:00+00:00   29436.647295100185  29212.8610969002

对于可重现的代码(带有错误消息),请看下面。

     data = pd.DataFrame({'date': ['2021-01-01 00:00:00+00:00','2021-01-01 01:00:00+00:00','2021-01-01 02:00:00+00:00'],
                          'btc_open': [28905.98, 29016.12, 29436.64],
                          'btc_close': [29013.05, 29432.82, 29212.86]})
     data['date'] = pd.to_datetime(data['date'], format = '%Y-%m-%d %H:%M:%S')

     df_subset_1 = data[['date','btc_open','btc_close']]

     # Converting datehour to date and hour columns
     df_subset_1['date'] = df_subset_1['date'].dt.date
     df_subset_1['hour'] = df_subset_1['date'].dt.hour

有人知道怎么做吗?

【问题讨论】:

  • df_subset_1['date'] = df_subset_1['date'].dt.date 使df_subset_1['date'] 成为日期对象列,不允许使用 dt 访问器。只需将列的 dtype 保留为 pandas datetime。

标签: python-3.x pandas datetime


【解决方案1】:

保留一列 pandas datetime dtype(另见 Time series / date functionality),EX:

import pandas as pd

data = pd.DataFrame({'datetime': ['2021-01-01 00:00:00+00:00','2021-01-01 01:00:00+00:00','2021-01-01 02:00:00+00:00'],
                     'btc_open': [28905.98, 29016.12, 29436.64],
                     'btc_close': [29013.05, 29432.82, 29212.86]})

data['datetime'] = pd.to_datetime(data['datetime'])

df_subset_1 = data[['datetime','btc_open','btc_close']]

# extract date and hour from datetime column 
df_subset_1['date'] = df_subset_1['datetime'].dt.date
df_subset_1['hour'] = df_subset_1['datetime'].dt.hour

df_subset_1
                   datetime  btc_open  btc_close        date  hour
0 2021-01-01 00:00:00+00:00  28905.98   29013.05  2021-01-01     0
1 2021-01-01 01:00:00+00:00  29016.12   29432.82  2021-01-01     1
2 2021-01-01 02:00:00+00:00  29436.64   29212.86  2021-01-01     2

【讨论】:

  • 这很完美!谢谢。
猜你喜欢
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多