@@ -782,108 +782,91 @@ def test_datetime(self):
782
782
index = Index (dates )
783
783
assert index .inferred_type == "datetime64"
784
784
785
- def test_infer_dtype_datetime (self ):
786
-
787
- arr = np .array ([Timestamp ("2011-01-01" ), Timestamp ("2011-01-02" )])
788
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
789
-
785
+ def test_infer_dtype_datetime64 (self ):
790
786
arr = np .array (
791
787
[np .datetime64 ("2011-01-01" ), np .datetime64 ("2011-01-01" )], dtype = object
792
788
)
793
789
assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
794
790
795
- arr = np .array ([datetime (2011 , 1 , 1 ), datetime (2012 , 2 , 1 )])
796
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
797
-
791
+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
792
+ def test_infer_dtype_datetime64_with_na (self , na_value ):
798
793
# starts with nan
799
- for n in [pd .NaT , np .nan ]:
800
- arr = np .array ([n , pd .Timestamp ("2011-01-02" )])
801
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
802
-
803
- arr = np .array ([n , np .datetime64 ("2011-01-02" )])
804
- assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
805
-
806
- arr = np .array ([n , datetime (2011 , 1 , 1 )])
807
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
808
-
809
- arr = np .array ([n , pd .Timestamp ("2011-01-02" ), n ])
810
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
811
-
812
- arr = np .array ([n , np .datetime64 ("2011-01-02" ), n ])
813
- assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
814
-
815
- arr = np .array ([n , datetime (2011 , 1 , 1 ), n ])
816
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
794
+ arr = np .array ([na_value , np .datetime64 ("2011-01-02" )])
795
+ assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
817
796
818
- # different type of nat
819
- arr = np .array (
820
- [np .timedelta64 ("nat" ), np .datetime64 ("2011-01-02" )], dtype = object
821
- )
822
- assert lib .infer_dtype (arr , skipna = False ) == "mixed"
797
+ arr = np .array ([na_value , np .datetime64 ("2011-01-02" ), na_value ])
798
+ assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
823
799
824
- arr = np .array (
825
- [np .datetime64 ("2011-01-02" ), np .timedelta64 ("nat" )], dtype = object
826
- )
800
+ @pytest .mark .parametrize (
801
+ "arr" ,
802
+ [
803
+ np .array (
804
+ [np .timedelta64 ("nat" ), np .datetime64 ("2011-01-02" )], dtype = object
805
+ ),
806
+ np .array (
807
+ [np .datetime64 ("2011-01-02" ), np .timedelta64 ("nat" )], dtype = object
808
+ ),
809
+ np .array ([np .datetime64 ("2011-01-01" ), pd .Timestamp ("2011-01-02" )]),
810
+ np .array ([pd .Timestamp ("2011-01-02" ), np .datetime64 ("2011-01-01" )]),
811
+ np .array ([np .nan , pd .Timestamp ("2011-01-02" ), 1.1 ]),
812
+ np .array ([np .nan , "2011-01-01" , pd .Timestamp ("2011-01-02" )]),
813
+ np .array ([np .datetime64 ("nat" ), np .timedelta64 (1 , "D" )], dtype = object ),
814
+ np .array ([np .timedelta64 (1 , "D" ), np .datetime64 ("nat" )], dtype = object ),
815
+ ],
816
+ )
817
+ def test_infer_datetimelike_dtype_mixed (self , arr ):
827
818
assert lib .infer_dtype (arr , skipna = False ) == "mixed"
828
819
829
- # mixed datetime
830
- arr = np .array ([datetime (2011 , 1 , 1 ), pd .Timestamp ("2011-01-02" )])
831
- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
832
-
833
- # should be datetime?
834
- arr = np .array ([np .datetime64 ("2011-01-01" ), pd .Timestamp ("2011-01-02" )])
835
- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
836
-
837
- arr = np .array ([pd .Timestamp ("2011-01-02" ), np .datetime64 ("2011-01-01" )])
838
- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
839
-
820
+ def test_infer_dtype_mixed_integer (self ):
840
821
arr = np .array ([np .nan , pd .Timestamp ("2011-01-02" ), 1 ])
841
822
assert lib .infer_dtype (arr , skipna = True ) == "mixed-integer"
842
823
843
- arr = np .array ([np .nan , pd .Timestamp ("2011-01-02" ), 1.1 ])
844
- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
824
+ @pytest .mark .parametrize (
825
+ "arr" ,
826
+ [
827
+ np .array ([Timestamp ("2011-01-01" ), Timestamp ("2011-01-02" )]),
828
+ np .array ([datetime (2011 , 1 , 1 ), datetime (2012 , 2 , 1 )]),
829
+ np .array ([datetime (2011 , 1 , 1 ), pd .Timestamp ("2011-01-02" )]),
830
+ ],
831
+ )
832
+ def test_infer_dtype_datetime (self , arr ):
833
+ assert lib .infer_dtype (arr , skipna = True ) == "datetime"
845
834
846
- arr = np .array ([np .nan , "2011-01-01" , pd .Timestamp ("2011-01-02" )])
847
- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
835
+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
836
+ @pytest .mark .parametrize (
837
+ "time_stamp" , [pd .Timestamp ("2011-01-01" ), datetime (2011 , 1 , 1 )]
838
+ )
839
+ def test_infer_dtype_datetime_with_na (self , na_value , time_stamp ):
840
+ # starts with nan
841
+ arr = np .array ([na_value , time_stamp ])
842
+ assert lib .infer_dtype (arr , skipna = True ) == "datetime"
848
843
849
- def test_infer_dtype_timedelta (self ):
844
+ arr = np .array ([na_value , time_stamp , na_value ])
845
+ assert lib .infer_dtype (arr , skipna = True ) == "datetime"
850
846
851
- arr = np .array ([pd .Timedelta ("1 days" ), pd .Timedelta ("2 days" )])
847
+ @pytest .mark .parametrize (
848
+ "arr" ,
849
+ [
850
+ np .array ([pd .Timedelta ("1 days" ), pd .Timedelta ("2 days" )]),
851
+ np .array ([np .timedelta64 (1 , "D" ), np .timedelta64 (2 , "D" )], dtype = object ),
852
+ np .array ([timedelta (1 ), timedelta (2 )]),
853
+ ],
854
+ )
855
+ def test_infer_dtype_timedelta (self , arr ):
852
856
assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
853
857
854
- arr = np .array ([np .timedelta64 (1 , "D" ), np .timedelta64 (2 , "D" )], dtype = object )
858
+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
859
+ @pytest .mark .parametrize (
860
+ "delta" , [Timedelta ("1 days" ), np .timedelta64 (1 , "D" ), timedelta (1 )]
861
+ )
862
+ def test_infer_dtype_timedelta_with_na (self , na_value , delta ):
863
+ # starts with nan
864
+ arr = np .array ([na_value , delta ])
855
865
assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
856
866
857
- arr = np .array ([timedelta ( 1 ), timedelta ( 2 ) ])
867
+ arr = np .array ([na_value , delta , na_value ])
858
868
assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
859
869
860
- # starts with nan
861
- for n in [pd .NaT , np .nan ]:
862
- arr = np .array ([n , Timedelta ("1 days" )])
863
- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
864
-
865
- arr = np .array ([n , np .timedelta64 (1 , "D" )])
866
- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
867
-
868
- arr = np .array ([n , timedelta (1 )])
869
- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
870
-
871
- arr = np .array ([n , pd .Timedelta ("1 days" ), n ])
872
- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
873
-
874
- arr = np .array ([n , np .timedelta64 (1 , "D" ), n ])
875
- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
876
-
877
- arr = np .array ([n , timedelta (1 ), n ])
878
- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
879
-
880
- # different type of nat
881
- arr = np .array ([np .datetime64 ("nat" ), np .timedelta64 (1 , "D" )], dtype = object )
882
- assert lib .infer_dtype (arr , skipna = False ) == "mixed"
883
-
884
- arr = np .array ([np .timedelta64 (1 , "D" ), np .datetime64 ("nat" )], dtype = object )
885
- assert lib .infer_dtype (arr , skipna = False ) == "mixed"
886
-
887
870
def test_infer_dtype_period (self ):
888
871
# GH 13664
889
872
arr = np .array ([pd .Period ("2011-01" , freq = "D" ), pd .Period ("2011-02" , freq = "D" )])
@@ -892,25 +875,26 @@ def test_infer_dtype_period(self):
892
875
arr = np .array ([pd .Period ("2011-01" , freq = "D" ), pd .Period ("2011-02" , freq = "M" )])
893
876
assert lib .infer_dtype (arr , skipna = True ) == "period"
894
877
895
- # starts with nan
896
- for n in [pd .NaT , np .nan ]:
897
- arr = np .array ([n , pd .Period ("2011-01" , freq = "D" )])
898
- assert lib .infer_dtype (arr , skipna = True ) == "period"
899
-
900
- arr = np .array ([n , pd .Period ("2011-01" , freq = "D" ), n ])
901
- assert lib .infer_dtype (arr , skipna = True ) == "period"
902
-
903
- # different type of nat
878
+ def test_infer_dtype_period_mixed (self ):
904
879
arr = np .array (
905
- [np . datetime64 ( "nat" ), pd .Period ("2011-01" , freq = "M" )], dtype = object
880
+ [pd .Period ("2011-01" , freq = "M" ), np . datetime64 ( "nat " )], dtype = object
906
881
)
907
882
assert lib .infer_dtype (arr , skipna = False ) == "mixed"
908
883
909
884
arr = np .array (
910
- [pd .Period ("2011-01" , freq = "M" ), np . datetime64 ( "nat " )], dtype = object
885
+ [np . datetime64 ( "nat" ), pd .Period ("2011-01" , freq = "M" )], dtype = object
911
886
)
912
887
assert lib .infer_dtype (arr , skipna = False ) == "mixed"
913
888
889
+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
890
+ def test_infer_dtype_period_with_na (self , na_value ):
891
+ # starts with nan
892
+ arr = np .array ([na_value , pd .Period ("2011-01" , freq = "D" )])
893
+ assert lib .infer_dtype (arr , skipna = True ) == "period"
894
+
895
+ arr = np .array ([na_value , pd .Period ("2011-01" , freq = "D" ), na_value ])
896
+ assert lib .infer_dtype (arr , skipna = True ) == "period"
897
+
914
898
@pytest .mark .parametrize (
915
899
"data" ,
916
900
[
0 commit comments