File tree 4 files changed +24
-4
lines changed
asv_bench/benchmarks/tslibs
4 files changed +24
-4
lines changed Original file line number Diff line number Diff line change 10
10
11
11
12
12
class TimedeltaConstructor :
13
+ def setup (self ):
14
+ self .nptimedelta64 = np .timedelta64 (3600 )
15
+ self .dttimedelta = datetime .timedelta (seconds = 3600 )
16
+ self .td = Timedelta (3600 , unit = "s" )
17
+
13
18
def time_from_int (self ):
14
19
Timedelta (123456789 )
15
20
@@ -28,10 +33,10 @@ def time_from_components(self):
28
33
)
29
34
30
35
def time_from_datetime_timedelta (self ):
31
- Timedelta (datetime . timedelta ( days = 1 , seconds = 1 ) )
36
+ Timedelta (self . dttimedelta )
32
37
33
38
def time_from_np_timedelta (self ):
34
- Timedelta (np . timedelta64 ( 1 , "ms" ) )
39
+ Timedelta (self . nptimedelta64 )
35
40
36
41
def time_from_string (self ):
37
42
Timedelta ("1 days" )
@@ -42,6 +47,9 @@ def time_from_iso_format(self):
42
47
def time_from_missing (self ):
43
48
Timedelta ("nat" )
44
49
50
+ def time_from_pd_timedelta (self ):
51
+ Timedelta (self .td )
52
+
45
53
46
54
class TimedeltaProperties :
47
55
def setup_cache (self ):
Original file line number Diff line number Diff line change @@ -74,7 +74,7 @@ Deprecations
74
74
75
75
Performance improvements
76
76
~~~~~~~~~~~~~~~~~~~~~~~~
77
-
77
+ - Performance improvement in :class: ` Timedelta ` constructor ( :issue: ` 30543 `)
78
78
-
79
79
-
80
80
Original file line number Diff line number Diff line change @@ -1208,7 +1208,12 @@ class Timedelta(_Timedelta):
1208
1208
" represent unambiguous timedelta values durations."
1209
1209
)
1210
1210
1211
- if isinstance (value, Timedelta):
1211
+ # GH 30543 if pd.Timedelta already passed, return it
1212
+ # check that only value is passed
1213
+ if (isinstance (value, Timedelta) and unit is None and
1214
+ len (kwargs) == 0 ):
1215
+ return value
1216
+ elif isinstance (value, Timedelta):
1212
1217
value = value.value
1213
1218
elif isinstance (value, str ):
1214
1219
if len (value) > 0 and value[0 ] == ' P' :
Original file line number Diff line number Diff line change @@ -950,3 +950,10 @@ def test_datetimeindex_constructor_misc(self):
950
950
)
951
951
assert len (idx1 ) == len (idx2 )
952
952
assert idx1 .freq == idx2 .freq
953
+
954
+
955
+ def test_timedelta_constructor_identity ():
956
+ # Test for #30543
957
+ expected = pd .Timedelta (np .timedelta64 (1 , "s" ))
958
+ result = pd .Timedelta (expected )
959
+ assert result is expected
You can’t perform that action at this time.
0 commit comments