我需要基于小时对时间戳进行分类,例如,如果它是在上午7点到上午9点之间,则应该是早晨。我有从csv文件中提取的时间戳,我只需要小时,因此可以使用if语句对数字进行分类。
我将使用 date 列中的时间戳记,并创建一个名为 hour 的新列
df['hour'] = df.date.dt.hour
但是它给了我以下错误: AttributeError:只能使用具有datetimelike值的.dt访问器
时间戳如下:2016-03-14 17:24:55
答案 0 :(得分:0)
我不确定df
是哪种对象,但是您可以将时间戳转换为datetime
对象,然后使用datetime对象的属性访问时间戳属性:
from datetime import datetime
d = datetime.strptime('2016-03-14 17:24:55', '%Y-%m-%d %H:%M:%S')
df['hour'] = d.hour
您可以详细了解datetime
模块at this link
答案 1 :(得分:0)
您需要创建一个datetime
对象,并使用从CSV输入数据中提取的时间戳字符串:
In [1]: import datetime
In [2]: s = '2016-03-14 17:24:55'
In [3]: d = datetime.datetime.fromisoformat(s)
In [4]: d.hour
Out[4]: 17
答案 2 :(得分:0)
您需要先将“ date”列转换为datatime对象:
df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d %H:%M:%S')
df['hour'] = df['date'].dt.hour
答案 3 :(得分:0)
获得AttributeError: Can only use .dt accessor with datetimelike values
的原因很可能是因为该特定系列不是datetime
对象类型。
与错误状态一样,.dt属性可用于日期时间对象。因此,第一件事是检查条目type
。
假设这些值不是日期时间对象,则将其转换为
指定datetime_format = '%Y-%m-%d %H:%M:%S'
并通过以下方式使用.dt来获取时间值:
data['start_datetime'] = pd.to_datetime(data['start_datetime'], format=datetime_format)
h = data['start_datetime'].dt.hour
m = data['start_datetime'].dt.minute
s = data['start_datetime'].dt.second