6
6
7
7
import pytest
8
8
9
+ import pandas as pd
9
10
from pandas import Timestamp
10
11
from pandas import compat
11
12
@@ -32,6 +33,36 @@ def test_quarterly_dont_normalize():
32
33
assert (result .time () == date .time ())
33
34
34
35
36
+
37
+ @pytest .mark .parametrize ('offset' , [MonthBegin (), MonthEnd (),
38
+ BMonthBegin (), BMonthEnd ()])
39
+ def test_apply_index (offset ):
40
+ rng = pd .date_range (start = '1/1/2000' , periods = 100000 , freq = 'T' )
41
+ ser = pd .Series (rng )
42
+
43
+ res = rng + offset
44
+ res_v2 = offset .apply_index (rng )
45
+ assert (res == res_v2 ).all ()
46
+ assert res [0 ] == rng [0 ] + offset
47
+ assert res [- 1 ] == rng [- 1 ] + offset
48
+ res2 = ser + offset
49
+ # apply_index is only for indexes, not series, so no res2_v2
50
+ assert res2 .iloc [0 ] == ser .iloc [0 ] + offset
51
+ assert res2 .iloc [- 1 ] == ser .iloc [- 1 ] + offset
52
+
53
+
54
+ @pytest .mark .parametrize ('offset' , [QuarterBegin (), QuarterEnd (),
55
+ BQuarterBegin (), BQuarterEnd ()])
56
+ def test_on_offset (offset ):
57
+ dates = [datetime (2016 , m , d )
58
+ for m in [10 , 11 , 12 ]
59
+ for d in [1 , 2 , 3 , 28 , 29 , 30 , 31 ] if not (m == 11 and d == 31 )]
60
+ for date in dates :
61
+ res = offset .onOffset (date )
62
+ slow_version = date == (date + offset ) - offset
63
+ assert res == slow_version
64
+
65
+
35
66
# --------------------------------------------------------------------
36
67
# Months
37
68
0 commit comments