pandas timeseries选择所有记录< = datetime

时间:2014-03-20 17:15:18

标签: python pandas

我正在尝试选择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。知道怎么解决这个问题吗?

1 个答案:

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