我可以对熊猫中无序的时间序列索引进行切片吗?

时间:2019-01-30 15:18:54

标签: python pandas

我正在观看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

1 个答案:

答案 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