python - 仅根据工作日(上午 8 点至晚上 10 点)和工作日在 Python 中查询数据

标签 python arrays datetime numpy pandas

我的问题非常开放,我正在寻找一些有关如何使用以下格式操作数组的建议:

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['Date'] 中格式为 yyyy-mm-yy 的日期与 t 中显示的日期(格式也是 yyyy-)不匹配毫米-日。这可以通过查看v来验证,其中的内容都是假的。

最佳答案

您可以使用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

关于python - 仅根据工作日(上午 8 点至晚上 10 点)和工作日在 Python 中查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784280/

相关文章:

python - 如何在 Python 中解析具有 UTC 偏移量的时区?

python - 如何在同一个 Windows XP 机器上运行 python 2.6 和 3.0?

Python 菜单不循环?

c - 如何使用数组的元素?

javascript - 我在返回数组的每个值时遇到问题

Java:无法正确搜索数组

python - numpy.heaviside 和机器精度

python - 计算向量中大于常数的连续值的总和?

python - 使用 Pandas 将字符串转换为日期时间

php - DateTime倒计时和到期