@@ -683,17 +683,44 @@ def test_constructor_dtype_datetime64(self):
683
683
assert s .dtype == 'M8[ns]'
684
684
685
685
# GH3414 related
686
- # msg = (r"cannot astype a datetimelike from \[datetime64\[ns\]\] to"
687
- # r" \[int32\]")
688
- # with pytest.raises(TypeError, match=msg):
689
- # Series(Series(dates).astype('int') / 1000000, dtype='M8[ms]')
690
- pytest .raises (TypeError , lambda x : Series (
691
- Series (dates ).astype ('int' ) / 1000000 , dtype = 'M8[ms]' ))
692
-
693
- msg = (r"The 'datetime64' dtype has no unit\. Please pass in"
694
- r" 'datetime64\[ns\]' instead\." )
695
- with pytest .raises (ValueError , match = msg ):
696
- Series (dates , dtype = 'datetime64' )
686
+ expected = Series ([
687
+ datetime (2013 , 1 , 1 ),
688
+ datetime (2013 , 1 , 2 ),
689
+ datetime (2013 , 1 , 3 ),
690
+ ], dtype = 'datetime64[ns]' )
691
+
692
+ result = Series (
693
+ Series (dates ).astype (np .int64 ) / 1000000 , dtype = 'M8[ms]' )
694
+ tm .assert_series_equal (result , expected )
695
+
696
+ result = Series (dates , dtype = 'datetime64[ns]' )
697
+ tm .assert_series_equal (result , expected )
698
+
699
+ expected = Series ([
700
+ pd .NaT ,
701
+ datetime (2013 , 1 , 2 ),
702
+ datetime (2013 , 1 , 3 ),
703
+ ], dtype = 'datetime64[ns]' )
704
+ result = Series ([np .nan ] + dates [1 :], dtype = 'datetime64[ns]' )
705
+ tm .assert_series_equal (result , expected )
706
+
707
+ dts = Series (dates , dtype = 'datetime64[ns]' )
708
+
709
+ # valid astype
710
+ dts .astype ('int64' )
711
+
712
+ # invalid casting
713
+ msg = (r"cannot astype a datetimelike from \[datetime64\[ns\]\] to"
714
+ r" \[int32\]" )
715
+ with pytest .raises (TypeError , match = msg ):
716
+ dts .astype ('int32' )
717
+
718
+ # ints are ok
719
+ # we test with np.int64 to get similar results on
720
+ # windows / 32-bit platforms
721
+ result = Series (dts , dtype = np .int64 )
722
+ expected = Series (dts .astype (np .int64 ))
723
+ tm .assert_series_equal (result , expected )
697
724
698
725
# invalid dates can be help as object
699
726
result = Series ([datetime (2 , 1 , 1 )])
0 commit comments