我正在观看Wes McKinney录制的熊猫时间序列视频。他提到,如果您尝试对未排序的时间序列索引进行切片,则Pandas会引发异常。
但是,当我自己尝试此操作时,它似乎起作用了。虽然,我不明白为什么。
这是一个例子:
我使用了Wes McKinney在熊猫时间序列上的一些代码示例(在YouTube上)。但是,预期输出与实际输出不匹配。该视频有些旧,从2012年开始,所以也许他在以后的Pandas版本中做了此更改,但我想知道是不是它,或者是我误解了他还是做错了事。
我正在基于Ubuntu 18.04的系统上运行Pandas版本0.22.0。
先谢谢了。
import numpy as np
import pandas as pd
ts = pd.Series(np.arange(1000), index = date_range)
ts2 = ts.take(np.random.permutation(len(ts)))
ts2['2015-01-01':'2016-01-01']
我希望得到一个TimeSeriesError: Partial indexing only valid for ordered series.
我实际上得到的数据看起来像这样:
2015-08-27 238
2015-04-11 100
2015-08-17 228
2015-12-10 343
2015-08-06 217
2015-02-16 46
2015-01-29 28
...
2015-06-08 158
2015-04-16 105
2015-03-08 66
2015-11-22 325
2015-10-21 293
2015-10-04 276
2015-08-02 213
2015-09-19 261
答案 0 :(得分:0)
它适用于字符串索引,但不适用于预期区域之外的datetime对象。 (尽管并非总是可以预测的。)
import datetime as dt
ts2['2015-01-01':'2021-01-01'] # works
ts2[dt.date(2015, 1, 1):dt.date(2016, 1, 1)] # works
ts2[dt.date(2015, 1, 1):dt.date(2021, 1, 1)] # ValueError
有an issue on Github,但是Jeff Reback表示这不是错误;文档会警告“ unexpected behaviour”