14
14
date_range )
15
15
16
16
17
+ @pytest .fixture (params = [None , 'UTC' , 'Asia/Tokyo' ,
18
+ 'US/Eastern' , 'dateutil/Asia/Singapore' ,
19
+ 'dateutil/US/Pacific' ])
20
+ def tz (request ):
21
+ return request .param
22
+
23
+
24
+ @pytest .fixture (params = [pd .offsets .Hour (2 ), timedelta (hours = 2 ),
25
+ np .timedelta64 (2 , 'h' ), Timedelta (hours = 2 )],
26
+ ids = str )
27
+ def delta (request ):
28
+ # Several ways of representing two hours
29
+ return request .param
30
+
31
+
32
+ @pytest .fixture (
33
+ params = [
34
+ datetime (2011 , 1 , 1 ),
35
+ DatetimeIndex (['2011-01-01' , '2011-01-02' ]),
36
+ DatetimeIndex (['2011-01-01' , '2011-01-02' ]).tz_localize ('US/Eastern' ),
37
+ np .datetime64 ('2011-01-01' ),
38
+ Timestamp ('2011-01-01' )],
39
+ ids = lambda x : type (x ).__name__ )
40
+ def addend (request ):
41
+ return request .param
42
+
43
+
17
44
class TestDatetimeIndexArithmetic (object ):
18
- tz = [None , 'UTC' , 'Asia/Tokyo' , 'US/Eastern' , 'dateutil/Asia/Singapore' ,
19
- 'dateutil/US/Pacific' ]
20
-
21
- def test_add_iadd (self ):
22
- for tz in self .tz :
23
-
24
- # offset
25
- offsets = [pd .offsets .Hour (2 ), timedelta (hours = 2 ),
26
- np .timedelta64 (2 , 'h' ), Timedelta (hours = 2 )]
27
-
28
- for delta in offsets :
29
- rng = pd .date_range ('2000-01-01' , '2000-02-01' , tz = tz )
30
- result = rng + delta
31
- expected = pd .date_range ('2000-01-01 02:00' ,
32
- '2000-02-01 02:00' , tz = tz )
33
- tm .assert_index_equal (result , expected )
34
- rng += delta
35
- tm .assert_index_equal (rng , expected )
36
-
37
- # int
38
- rng = pd .date_range ('2000-01-01 09:00' , freq = 'H' , periods = 10 ,
39
- tz = tz )
40
- result = rng + 1
41
- expected = pd .date_range ('2000-01-01 10:00' , freq = 'H' , periods = 10 ,
42
- tz = tz )
43
- tm .assert_index_equal (result , expected )
44
- rng += 1
45
- tm .assert_index_equal (rng , expected )
46
45
46
+ def test_dti_add_timestamp_raises (self ):
47
47
idx = DatetimeIndex (['2011-01-01' , '2011-01-02' ])
48
48
msg = "cannot add DatetimeIndex and Timestamp"
49
49
with tm .assert_raises_regex (TypeError , msg ):
50
50
idx + Timestamp ('2011-01-01' )
51
51
52
+ def test_dti_radd_timestamp_raises (self ):
53
+ idx = DatetimeIndex (['2011-01-01' , '2011-01-02' ])
54
+ msg = "cannot add DatetimeIndex and Timestamp"
52
55
with tm .assert_raises_regex (TypeError , msg ):
53
56
Timestamp ('2011-01-01' ) + idx
54
57
55
- def test_sub_isub (self ):
56
- for tz in self .tz :
57
-
58
- # offset
59
- offsets = [pd .offsets .Hour (2 ), timedelta (hours = 2 ),
60
- np .timedelta64 (2 , 'h' ), Timedelta (hours = 2 )]
61
-
62
- for delta in offsets :
63
- rng = pd .date_range ('2000-01-01' , '2000-02-01' , tz = tz )
64
- expected = pd .date_range ('1999-12-31 22:00' ,
65
- '2000-01-31 22:00' , tz = tz )
66
-
67
- result = rng - delta
68
- tm .assert_index_equal (result , expected )
69
- rng -= delta
70
- tm .assert_index_equal (rng , expected )
71
-
72
- # int
73
- rng = pd .date_range ('2000-01-01 09:00' , freq = 'H' , periods = 10 ,
74
- tz = tz )
75
- result = rng - 1
76
- expected = pd .date_range ('2000-01-01 08:00' , freq = 'H' , periods = 10 ,
77
- tz = tz )
78
- tm .assert_index_equal (result , expected )
79
- rng -= 1
80
- tm .assert_index_equal (rng , expected )
81
-
82
- @pytest .mark .parametrize ('addend' , [
83
- datetime (2011 , 1 , 1 ),
84
- DatetimeIndex (['2011-01-01' , '2011-01-02' ]),
85
- DatetimeIndex (['2011-01-01' , '2011-01-02' ]).tz_localize ('US/Eastern' ),
86
- np .datetime64 ('2011-01-01' ),
87
- Timestamp ('2011-01-01' )])
58
+ # -------------------------------------------------------------
59
+ # Binary operations DatetimeIndex and int
60
+
61
+ def test_dti_add_int (self , tz ):
62
+ rng = pd .date_range ('2000-01-01 09:00' , freq = 'H' ,
63
+ periods = 10 , tz = tz )
64
+ result = rng + 1
65
+ expected = pd .date_range ('2000-01-01 10:00' , freq = 'H' ,
66
+ periods = 10 , tz = tz )
67
+ tm .assert_index_equal (result , expected )
68
+
69
+ def test_dti_iadd_int (self , tz ):
70
+ rng = pd .date_range ('2000-01-01 09:00' , freq = 'H' ,
71
+ periods = 10 , tz = tz )
72
+ expected = pd .date_range ('2000-01-01 10:00' , freq = 'H' ,
73
+ periods = 10 , tz = tz )
74
+ rng += 1
75
+ tm .assert_index_equal (rng , expected )
76
+
77
+ def test_dti_sub_int (self , tz ):
78
+ rng = pd .date_range ('2000-01-01 09:00' , freq = 'H' ,
79
+ periods = 10 , tz = tz )
80
+ result = rng - 1
81
+ expected = pd .date_range ('2000-01-01 08:00' , freq = 'H' ,
82
+ periods = 10 , tz = tz )
83
+ tm .assert_index_equal (result , expected )
84
+
85
+ def test_dti_isub_int (self , tz ):
86
+ rng = pd .date_range ('2000-01-01 09:00' , freq = 'H' ,
87
+ periods = 10 , tz = tz )
88
+ expected = pd .date_range ('2000-01-01 08:00' , freq = 'H' ,
89
+ periods = 10 , tz = tz )
90
+ rng -= 1
91
+ tm .assert_index_equal (rng , expected )
92
+
93
+ # -------------------------------------------------------------
94
+ # Binary operations DatetimeIndex and timedelta-like
95
+
96
+ def test_dti_add_timedeltalike (self , tz , delta ):
97
+ rng = pd .date_range ('2000-01-01' , '2000-02-01' , tz = tz )
98
+ result = rng + delta
99
+ expected = pd .date_range ('2000-01-01 02:00' ,
100
+ '2000-02-01 02:00' , tz = tz )
101
+ tm .assert_index_equal (result , expected )
102
+
103
+ def test_dti_iadd_timedeltalike (self , tz , delta ):
104
+ rng = pd .date_range ('2000-01-01' , '2000-02-01' , tz = tz )
105
+ expected = pd .date_range ('2000-01-01 02:00' ,
106
+ '2000-02-01 02:00' , tz = tz )
107
+ rng += delta
108
+ tm .assert_index_equal (rng , expected )
109
+
110
+ def test_dti_sub_timedeltalike (self , tz , delta ):
111
+ rng = pd .date_range ('2000-01-01' , '2000-02-01' , tz = tz )
112
+ expected = pd .date_range ('1999-12-31 22:00' ,
113
+ '2000-01-31 22:00' , tz = tz )
114
+ result = rng - delta
115
+ tm .assert_index_equal (result , expected )
116
+
117
+ def test_dti_isub_timedeltalike (self , tz , delta ):
118
+ rng = pd .date_range ('2000-01-01' , '2000-02-01' , tz = tz )
119
+ expected = pd .date_range ('1999-12-31 22:00' ,
120
+ '2000-01-31 22:00' , tz = tz )
121
+ rng -= delta
122
+ tm .assert_index_equal (rng , expected )
123
+
124
+ # -------------------------------------------------------------
125
+ # Binary Operations DatetimeIndex and datetime-like
126
+ # TODO: A couple other tests belong in this section. Move them in
127
+ # A PR where there isn't already a giant diff.
128
+
88
129
def test_add_datetimelike_and_dti (self , addend ):
89
130
# GH#9631
90
131
dti = DatetimeIndex (['2011-01-01' , '2011-01-02' ])
@@ -95,12 +136,6 @@ def test_add_datetimelike_and_dti(self, addend):
95
136
with tm .assert_raises_regex (TypeError , msg ):
96
137
addend + dti
97
138
98
- @pytest .mark .parametrize ('addend' , [
99
- datetime (2011 , 1 , 1 ),
100
- DatetimeIndex (['2011-01-01' , '2011-01-02' ]),
101
- DatetimeIndex (['2011-01-01' , '2011-01-02' ]).tz_localize ('US/Eastern' ),
102
- np .datetime64 ('2011-01-01' ),
103
- Timestamp ('2011-01-01' )])
104
139
def test_add_datetimelike_and_dti_tz (self , addend ):
105
140
# GH#9631
106
141
dti_tz = DatetimeIndex (['2011-01-01' ,
@@ -112,6 +147,8 @@ def test_add_datetimelike_and_dti_tz(self, addend):
112
147
with tm .assert_raises_regex (TypeError , msg ):
113
148
addend + dti_tz
114
149
150
+ # -------------------------------------------------------------
151
+
115
152
def test_sub_dti_dti (self ):
116
153
# previously performed setop (deprecated in 0.16.0), now changed to
117
154
# return subtraction -> TimeDeltaIndex (GH ...)
0 commit comments