我正在尝试提取小时,看看这个值是否在特定范围内。我收到的错误是: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) ):
有什么建议吗?
答案 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]
等等。