File tree Expand file tree Collapse file tree 4 files changed +24
-4
lines changed
asv_bench/benchmarks/tslibs Expand file tree Collapse file tree 4 files changed +24
-4
lines changed Original file line number Diff line number Diff line change 1010
1111
1212class 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+
1318 def time_from_int (self ):
1419 Timedelta (123456789 )
1520
@@ -28,10 +33,10 @@ def time_from_components(self):
2833 )
2934
3035 def time_from_datetime_timedelta (self ):
31- Timedelta (datetime . timedelta ( days = 1 , seconds = 1 ) )
36+ Timedelta (self . dttimedelta )
3237
3338 def time_from_np_timedelta (self ):
34- Timedelta (np . timedelta64 ( 1 , "ms" ) )
39+ Timedelta (self . nptimedelta64 )
3540
3641 def time_from_string (self ):
3742 Timedelta ("1 days" )
@@ -42,6 +47,9 @@ def time_from_iso_format(self):
4247 def time_from_missing (self ):
4348 Timedelta ("nat" )
4449
50+ def time_from_pd_timedelta (self ):
51+ Timedelta (self .td )
52+
4553
4654class TimedeltaProperties :
4755 def setup_cache (self ):
Original file line number Diff line number Diff line change @@ -74,7 +74,7 @@ Deprecations
7474
7575Performance improvements
7676~~~~~~~~~~~~~~~~~~~~~~~~
77-
77+ - Performance improvement in :class: ` Timedelta ` constructor ( :issue: ` 30543 `)
7878-
7979-
8080
Original file line number Diff line number Diff line change @@ -1208,7 +1208,12 @@ class Timedelta(_Timedelta):
12081208 " represent unambiguous timedelta values durations."
12091209 )
12101210
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):
12121217 value = value.value
12131218 elif isinstance (value, str ):
12141219 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):
950950 )
951951 assert len (idx1 ) == len (idx2 )
952952 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