Python从时间戳开始变小时

时间:2019-03-18 20:06:26

标签: python date datetime timestamp

我需要基于小时对时间戳进行分类,例如,如果它是在上午7点到上午9点之间,则应该是早晨。我有从csv文件中提取的时间戳,我只需要小时,因此可以使用if语句对数字进行分类。

我将使用 date 列中的时间戳记,并创建一个名为 hour 的新列

df['hour'] = df.date.dt.hour

但是它给了我以下错误: AttributeError:只能使用具有datetimelike值的.dt访问器

时间戳如下:2016-03-14 17:24:55

4 个答案:

答案 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