@@ -245,7 +245,7 @@ cdef inline _decode_if_necessary(object ts):
245
245
return ts
246
246
247
247
248
- cdef inline parse_timedelta_string(object ts, object specified_unit = None ):
248
+ cdef inline parse_timedelta_string(object ts, specified_unit = None ):
249
249
"""
250
250
Parse a regular format timedelta string. Return an int64_t (in ns)
251
251
or raise a ValueError on an invalid parse.
@@ -407,10 +407,7 @@ cdef inline parse_timedelta_string(object ts, object specified_unit=None):
407
407
if have_value:
408
408
raise ValueError (" have leftover units" )
409
409
if len (number):
410
- if specified_unit is None :
411
- fallback_unit = ' ns'
412
- else :
413
- fallback_unit = specified_unit
410
+ fallback_unit = ' ns' if specified_unit is None else specified_unit
414
411
r = timedelta_from_spec(number, frac, fallback_unit)
415
412
result += timedelta_as_neg(r, neg)
416
413
@@ -1004,13 +1001,25 @@ class Timedelta(_Timedelta):
1004
1001
" [weeks, days, hours, minutes, seconds, "
1005
1002
" milliseconds, microseconds, nanoseconds]" )
1006
1003
1004
+
1007
1005
if isinstance (value, Timedelta):
1008
1006
value = value.value
1009
1007
elif is_string_object(value):
1010
- if len (value) > 0 and value[0 ] == ' P' :
1008
+ # Check if it is just a number in a string
1009
+ try :
1010
+ value = int (value)
1011
+ except (ValueError , TypeError ):
1012
+ try :
1013
+ value = float (value)
1014
+ except (ValueError , TypeError ):
1015
+ pass
1016
+
1017
+ if is_integer_object(value) or is_float_object(value):
1018
+ value = convert_to_timedelta64(value, unit)
1019
+ elif len (value) > 0 and value[0 ] == ' P' :
1011
1020
value = parse_iso_format_string(value)
1012
1021
else :
1013
- value = parse_timedelta_string(value)
1022
+ value = parse_timedelta_string(value, unit )
1014
1023
value = np.timedelta64(value)
1015
1024
elif PyDelta_Check(value):
1016
1025
value = convert_to_timedelta64(value, ' ns' )
0 commit comments