@@ -59,19 +59,26 @@ def test_diff(self):
5959
6060 @pytest .mark .parametrize ('axis' , [0 , 1 ])
6161 @pytest .mark .parametrize ('tz' , [None , 'UTC' ])
62- @pytest .mark .xfail (raises = NotImplementedError )
6362 def test_diff_datetime (self , axis , tz ):
6463 # GH 18578
6564 df = DataFrame ({0 : date_range ('2010' , freq = 'D' , periods = 2 , tz = tz ),
6665 1 : date_range ('2010' , freq = 'D' , periods = 2 , tz = tz )})
67- result = df .diff (axis = axis ) # xfails for axis=1 and tz='UTC'
6866 if axis == 1 :
69- expected = DataFrame ({0 : pd .TimedeltaIndex (['NaT' , 'NaT' ]),
70- 1 : pd .TimedeltaIndex (['0 days' , '0 days' ])})
67+ if tz is None :
68+ result = df .diff (axis = axis )
69+ expected = DataFrame ({0 : pd .TimedeltaIndex (['NaT' , 'NaT' ]),
70+ 1 : pd .TimedeltaIndex (['0 days' ,
71+ '0 days' ])})
72+ assert_frame_equal (result , expected )
73+ else :
74+ with pytest .raises (NotImplementedError ):
75+ result = df .diff (axis = axis )
76+
7177 else :
78+ result = df .diff (axis = axis )
7279 expected = DataFrame ({0 : pd .TimedeltaIndex (['NaT' , '1 days' ]),
7380 1 : pd .TimedeltaIndex (['NaT' , '1 days' ])})
74- assert_frame_equal (result , expected )
81+ assert_frame_equal (result , expected )
7582
7683 def test_diff_timedelta (self ):
7784 # GH 4533
@@ -294,6 +301,28 @@ def test_shift(self):
294301 result = df .shift (1 , axis = 'columns' )
295302 assert_frame_equal (result , expected )
296303
304+ @pytest .mark .parametrize ('axis' , [0 , 1 ])
305+ @pytest .mark .parametrize ('tz' , [None , 'UTC' ])
306+ def test_shift_datetime (self , axis , tz ):
307+ # GH 18578
308+ df = DataFrame (date_range ('2010' , freq = 'D' , periods = 2 , tz = tz ))
309+ df [1 ] = df [0 ]
310+ if axis == 1 :
311+ if tz is None :
312+ result = df .shift (axis = axis )
313+ expected = DataFrame (DatetimeIndex ([pd .NaT ] * 2 ))
314+ expected [1 ] = df [1 ]
315+ assert_frame_equal (result , expected )
316+ else :
317+ with pytest .raises (NotImplementedError ):
318+ result = df .shift (axis = axis )
319+
320+ else :
321+ result = df .shift (axis = axis )
322+ expected = DataFrame ([pd .NaT , Timestamp ('2010' , tz = tz )])
323+ expected [1 ] = expected [0 ]
324+ assert_frame_equal (result , expected )
325+
297326 def test_shift_bool (self ):
298327 df = DataFrame ({'high' : [True , False ],
299328 'low' : [False , False ]})
0 commit comments