我正在尝试选择dateindex应小于给定日期的时间序列的子集。
rng = pd.date_range(datetime.date(2013,1,1), datetime.date(2014,1,1), freq='M')
ts = pd.TimeSeries(range(len(rng)),index=rng)
ts[ts < datetime.date(2013,8,1)]
抛出异常TypeError: can't compare datetime.date to int
。知道怎么解决这个问题吗?
答案 0 :(得分:1)
您的上一行会将ts
中的值与datetime.date
进行比较。这就是为什么你得到了具有不可排序类型的TypeError。
In [31]: ts[ts.index < np.datetime64('2013-08-01')]
Out[31]:
2013-01-31 0
2013-02-28 1
2013-03-31 2
2013-04-30 3
2013-05-31 4
2013-06-30 5
2013-07-31 6
Freq: M, dtype: int64
或者更简单,使用切片时间序列的特殊语法:
In [33]: ts[:'2013-08-01']
Out[33]:
2013-01-31 0
2013-02-28 1
2013-03-31 2
2013-04-30 3
2013-05-31 4
2013-06-30 5
2013-07-31 6
Freq: M, dtype: int64