@@ -1711,23 +1711,22 @@ def _partial_date_slice(self, reso, parsed):
1711
1711
if reso == 'year' :
1712
1712
t1 = to_timestamp (datetime (parsed .year , 1 , 1 ))
1713
1713
t2 = to_timestamp (datetime (parsed .year , 12 , 31 ))
1714
- i1 , i2 = np .searchsorted (self .asi8 , [t1 .value , t2 .value ])
1715
- return slice (i1 , i2 + 1 )
1716
1714
elif reso == 'month' :
1717
1715
d = lib .monthrange (parsed .year , parsed .month )[1 ]
1718
1716
t1 = to_timestamp (datetime (parsed .year , parsed .month , 1 ))
1719
1717
t2 = to_timestamp (datetime (parsed .year , parsed .month , d ))
1720
- i1 , i2 = np .searchsorted (self .asi8 , [t1 .value , t2 .value ])
1721
- return slice (i1 , i2 + 1 )
1722
1718
elif reso == 'quarter' :
1723
1719
qe = (((parsed .month - 1 ) + 2 ) % 12 ) + 1 # two months ahead
1724
1720
d = lib .monthrange (parsed .year , qe )[1 ] # at end of month
1725
1721
t1 = to_timestamp (datetime (parsed .year , parsed .month , 1 ))
1726
1722
t2 = to_timestamp (datetime (parsed .year , qe , d ))
1727
- i1 , i2 = np . searchsorted ( self . asi8 , [ t1 . value , t2 . value ])
1728
- return slice ( i1 , i2 + 1 )
1723
+ else :
1724
+ raise KeyError
1729
1725
1730
- raise KeyError
1726
+ stamps = self .asi8
1727
+ left = stamps .searchsorted (t1 .value , side = 'left' )
1728
+ right = stamps .searchsorted (t2 .value , side = 'right' )
1729
+ return slice (left , right )
1731
1730
1732
1731
def get_value (self , series , key ):
1733
1732
"""
0 commit comments