@@ -203,37 +203,49 @@ def test_intersection_cases(self):
203203 result = rng .intersection (rng [0 :0 ])
204204 assert len (result ) == 0
205205
206- def test_difference (self ):
206+ @pytest .mark .parametrize ("sort" , [True , False ])
207+ def test_difference (self , sort ):
207208 # diff
208- rng1 = pd .period_range ('1/1/2000' , freq = 'D' , periods = 5 )
209+ period_rng = ['1/3/2000' , '1/2/2000' , '1/1/2000' , '1/5/2000' ,
210+ '1/4/2000' ]
211+ rng1 = pd .PeriodIndex (period_rng , freq = 'D' )
209212 other1 = pd .period_range ('1/6/2000' , freq = 'D' , periods = 5 )
210- expected1 = pd . period_range ( '1/1/2000' , freq = 'D' , periods = 5 )
213+ expected1 = rng1
211214
212- rng2 = pd .period_range ( '1/1/2000' , freq = 'D' , periods = 5 )
215+ rng2 = pd .PeriodIndex ( period_rng , freq = 'D' )
213216 other2 = pd .period_range ('1/4/2000' , freq = 'D' , periods = 5 )
214- expected2 = pd .period_range ('1/1/2000' , freq = 'D' , periods = 3 )
217+ expected2 = pd .PeriodIndex (['1/3/2000' , '1/2/2000' , '1/1/2000' ],
218+ freq = 'D' )
215219
216- rng3 = pd .period_range ( '1/1/2000' , freq = 'D' , periods = 5 )
220+ rng3 = pd .PeriodIndex ( period_rng , freq = 'D' )
217221 other3 = pd .PeriodIndex ([], freq = 'D' )
218- expected3 = pd . period_range ( '1/1/2000' , freq = 'D' , periods = 5 )
222+ expected3 = rng3
219223
220- rng4 = pd .period_range ('2000-01-01 09:00' , freq = 'H' , periods = 5 )
224+ period_rng = ['2000-01-01 10:00' , '2000-01-01 09:00' ,
225+ '2000-01-01 12:00' , '2000-01-01 11:00' ,
226+ '2000-01-01 13:00' ]
227+ rng4 = pd .PeriodIndex (period_rng , freq = 'H' )
221228 other4 = pd .period_range ('2000-01-02 09:00' , freq = 'H' , periods = 5 )
222229 expected4 = rng4
223230
224- rng5 = pd .PeriodIndex (['2000-01-01 09:01 ' , '2000-01-01 09:03 ' ,
231+ rng5 = pd .PeriodIndex (['2000-01-01 09:03 ' , '2000-01-01 09:01 ' ,
225232 '2000-01-01 09:05' ], freq = 'T' )
226233 other5 = pd .PeriodIndex (
227234 ['2000-01-01 09:01' , '2000-01-01 09:05' ], freq = 'T' )
228235 expected5 = pd .PeriodIndex (['2000-01-01 09:03' ], freq = 'T' )
229236
230- rng6 = pd .period_range ('2000-01-01' , freq = 'M' , periods = 7 )
237+ period_rng = ['2000-02-01' , '2000-01-01' , '2000-06-01' ,
238+ '2000-07-01' , '2000-05-01' , '2000-03-01' ,
239+ '2000-04-01' ]
240+ rng6 = pd .PeriodIndex (period_rng , freq = 'M' )
231241 other6 = pd .period_range ('2000-04-01' , freq = 'M' , periods = 7 )
232- expected6 = pd .period_range ('2000-01-01' , freq = 'M' , periods = 3 )
242+ expected6 = pd .PeriodIndex (['2000-02-01' , '2000-01-01' , '2000-03-01' ],
243+ freq = 'M' )
233244
234- rng7 = pd .period_range ('2003-01-01' , freq = 'A' , periods = 5 )
245+ period_rng = ['2003' , '2007' , '2006' , '2005' , '2004' ]
246+ rng7 = pd .PeriodIndex (period_rng , freq = 'A' )
235247 other7 = pd .period_range ('1998-01-01' , freq = 'A' , periods = 8 )
236- expected7 = pd .period_range ( ' 2006-01-01' , freq = 'A' , periods = 2 )
248+ expected7 = pd .PeriodIndex ([ '2007' , ' 2006' ] , freq = 'A' )
237249
238250 for rng , other , expected in [(rng1 , other1 , expected1 ),
239251 (rng2 , other2 , expected2 ),
@@ -242,5 +254,7 @@ def test_difference(self):
242254 (rng5 , other5 , expected5 ),
243255 (rng6 , other6 , expected6 ),
244256 (rng7 , other7 , expected7 ), ]:
245- result_union = rng .difference (other )
257+ result_union = rng .difference (other , sort )
258+ if sort :
259+ expected = expected .sort_values ()
246260 tm .assert_index_equal (result_union , expected )
0 commit comments