从python中的时间戳中提取小时

时间:2017-08-07 04:52:10

标签: python python-3.x pandas

我正在尝试提取小时,看看这个值是否在特定范围内。我收到的错误是:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()。列类型是datetime64。

以下是我的数据的样子:(数据框存储完全相同的数据)

captureTime     id      occupancy   power   temperature
6/26/2017 0:25  1345    0           1.2     72.96

时间栏如下:6/26/17 0:04

我的代码如下:

if ( (df_mean['date'].dt.hour >= 6) & (df_mean['date'].dt.hour < 20) ):

我也试过这个:

if ( (df_mean['captureTime'].dt.hour >= 6) and (df_mean['captureTime'].dt.hour < 20) ):

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是错误的:

if ( (df_mean['date'].dt.hour >= 6) & (df_mean['date'].dt.hour < 20) ):

你正在处理一个布尔数组,好像它是一个布尔值。它不是,它是一个数组。一步一步:

match = df_mean['date'].dt.hour.between(6, 19)

然后你可以做以下事情:

if match.any():

if match.all():

if match.sum() > len(df) / 2:

或者您可以对原始数据进行分组:

good_data = df_mean[match]
bad_data = df_mean[~match]

等等。