@@ -609,24 +609,10 @@ def maybe_promote(dtype: np.dtype, fill_value=np.nan):
609
609
return np .dtype (object ), fill_value
610
610
611
611
elif issubclass (dtype .type , np .timedelta64 ):
612
- if (
613
- is_integer (fill_value )
614
- or is_float (fill_value )
615
- or isinstance (fill_value , str )
616
- ):
617
- # TODO: What about str that can be a timedelta?
618
- dtype = np .dtype (np .object_ )
619
- else :
620
- try :
621
- fv = Timedelta (fill_value )
622
- except ValueError :
623
- dtype = np .dtype (np .object_ )
624
- else :
625
- if fv is NaT :
626
- # NaT has no `to_timedelta64` method
627
- fill_value = np .timedelta64 ("NaT" , "ns" )
628
- else :
629
- fill_value = fv .to_timedelta64 ()
612
+ inferred , fv = infer_dtype_from_scalar (fill_value , pandas_dtype = True )
613
+ if inferred == dtype :
614
+ return dtype , fv
615
+ return np .dtype (object ), fill_value
630
616
631
617
elif is_float (fill_value ):
632
618
if issubclass (dtype .type , np .bool_ ):
@@ -782,11 +768,12 @@ def infer_dtype_from_scalar(val, pandas_dtype: bool = False) -> Tuple[DtypeObj,
782
768
783
769
elif isinstance (val , (np .timedelta64 , timedelta )):
784
770
try :
785
- val = Timedelta (val ). value
771
+ val = Timedelta (val )
786
772
except (OutOfBoundsTimedelta , OverflowError ):
787
773
dtype = np .dtype (object )
788
774
else :
789
775
dtype = np .dtype ("m8[ns]" )
776
+ val = np .timedelta64 (val .value , "ns" )
790
777
791
778
elif is_bool (val ):
792
779
dtype = np .dtype (np .bool_ )
0 commit comments