我的问题非常开放,我正在寻找有关如何使用以下格式操作数组的一些建议:
list:
[datetime.datetime(2016, 5, 17, 11, 32, 25),
datetime.datetime(2016, 5, 17, 11, 33, 25),
datetime.datetime(2016, 5, 17, 11, 34, 25), ...
我希望操纵数组,以便只考虑(1)个工作日,然后(2)只考虑上午8点到晚上10点之间的时间。我是否使用numpy或者pandas能实现这个目标吗?可以使用列表的格式,即datetime.datetime,还是将其转换为另一种格式?
我尝试拆分时代,以便日期和时间分开。在执行此操作时,请执行以下命令:
myArray.ix[pd.to_datetime(myArray['Epoch']).isin(pd.bdate_range(start='2016-05-16', end='2016-06-15')
Epoch格式是日期和时间,所以我只是分开这个,以便myArray现在包括' Date',' Epoch',' Value'作为三个单独的列。为了更好地理解这个命令(到目前为止还没有工作)以及如何使用它,我使用了以下调试行:
t = pd.bdate_range(start='2016-05-16', end='2016-06-15')
u = myArray['Date']
v = u.isin(t)
问题来自我所看到的,myArray ['日期']格式为yyyy-mm-yy的日期与t
中显示的日期不匹配,格式也是如此YYYY-MM-DD。这可以在查看v
时进行验证,其中此内容均为假。
答案 0 :(得分:3)
您可以使用bdate_range()仅选择工作日(1):
In [96]: d.ix[pd.to_datetime(d.Date.dt.date).isin(pd.bdate_range(start='2016-05-16', end='2016-05-22'))]
Out[96]:
Date val
0 2016-05-17 11:32:25 0.235264
1 2016-05-17 11:33:25 0.755800
2 2016-05-17 11:34:25 0.849591
3 2016-05-20 12:00:25 0.955704
和between_time()用于选择......(2)之间的时间:
In [97]: d.set_index('Date').between_time('11:30','11:34')
Out[97]:
val
Date
2016-05-17 11:32:25 0.235264
2016-05-17 11:33:25 0.755800
保留原始索引:
In [99]: d.set_index('Date').between_time('11:30','11:34').reset_index()
Out[99]:
Date val
0 2016-05-17 11:32:25 0.235264
1 2016-05-17 11:33:25 0.755800
示例数据框:
In [98]: d
Out[98]:
Date val
0 2016-05-17 11:32:25 0.235264
1 2016-05-17 11:33:25 0.755800
2 2016-05-17 11:34:25 0.849591
3 2016-05-20 12:00:25 0.955704
4 2016-05-21 13:13:13 0.301753