Skip to content

Commit 371dde4

Browse files
committed
Merge pull request #5415 from danielballan/to-timedelta-scalar
BUG: to_timedelta of a scalar returns a scalar, closes #5410.
2 parents c435e72 + ac620c7 commit 371dde4

File tree

4 files changed

+30
-6
lines changed

4 files changed

+30
-6
lines changed

doc/source/release.rst

+1
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,7 @@ Bug Fixes
770770
and DataFrames that have repeated (non-unique) indices. (:issue:`4620`)
771771
- Fix empty series not printing name in repr (:issue:`4651`)
772772
- Make tests create temp files in temp directory by default. (:issue:`5419`)
773+
- ``pd.to_timedelta`` of a scalar returns a scalar (:issue:`5410`)
773774

774775
pandas 0.12.0
775776
-------------

pandas/tests/test_series.py

+19
Original file line numberDiff line numberDiff line change
@@ -2314,6 +2314,25 @@ def test_timedelta64_operations_with_timedeltas(self):
23142314
# roundtrip
23152315
assert_series_equal(result + td2,td1)
23162316

2317+
# Now again, using pd.to_timedelta, which should build
2318+
# a Series or a scalar, depending on input.
2319+
if not _np_version_under1p7:
2320+
td1 = Series(pd.to_timedelta(['00:05:03'] * 3))
2321+
td2 = pd.to_timedelta('00:05:04')
2322+
result = td1 - td2
2323+
expected = Series([timedelta(seconds=0)] * 3) -Series(
2324+
[timedelta(seconds=1)] * 3)
2325+
self.assert_(result.dtype == 'm8[ns]')
2326+
assert_series_equal(result, expected)
2327+
2328+
result2 = td2 - td1
2329+
expected = (Series([timedelta(seconds=1)] * 3) -
2330+
Series([timedelta(seconds=0)] * 3))
2331+
assert_series_equal(result2, expected)
2332+
2333+
# roundtrip
2334+
assert_series_equal(result + td2,td1)
2335+
23172336
def test_timedelta64_operations_with_integers(self):
23182337

23192338
# GH 4521

pandas/tseries/tests/test_timedeltas.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -180,17 +180,20 @@ def test_timedelta_ops(self):
180180
s = Series([Timestamp('20130101') + timedelta(seconds=i*i) for i in range(10) ])
181181
td = s.diff()
182182

183-
result = td.mean()
183+
result = td.mean()[0]
184+
# TODO This should have returned a scalar to begin with. Hack for now.
184185
expected = to_timedelta(timedelta(seconds=9))
185-
tm.assert_series_equal(result, expected)
186+
tm.assert_almost_equal(result, expected)
186187

187188
result = td.quantile(.1)
189+
# This properly returned a scalar.
188190
expected = to_timedelta('00:00:02.6')
189-
tm.assert_series_equal(result, expected)
191+
tm.assert_almost_equal(result, expected)
190192

191-
result = td.median()
193+
result = td.median()[0]
194+
# TODO This should have returned a scalar to begin with. Hack for now.
192195
expected = to_timedelta('00:00:08')
193-
tm.assert_series_equal(result, expected)
196+
tm.assert_almost_equal(result, expected)
194197

195198
if __name__ == '__main__':
196199
nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],

pandas/tseries/timedeltas.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ def _convert_listlike(arg, box):
5858
elif is_list_like(arg):
5959
return _convert_listlike(arg, box=box)
6060

61-
return _convert_listlike([ arg ], box=box)
61+
# ...so it must be a scalar value. Return scalar.
62+
return _coerce_scalar_to_timedelta_type(arg, unit=unit)
6263

6364
_short_search = re.compile(
6465
"^\s*(?P<neg>-?)\s*(?P<value>\d*\.?\d*)\s*(?P<unit>d|s|ms|us|ns)?\s*$",re.IGNORECASE)

0 commit comments

Comments
 (0)