Skip to content

Commit 9c99566

Browse files
committed
Merge pull request #10072 from mortada/median_NaT
BUG: median() not correctly handling non-float null values (fixes #10
2 parents a03301f + df730a3 commit 9c99566

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

doc/source/whatsnew/v0.16.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -320,3 +320,4 @@ Bug Fixes
320320
- Google BigQuery connector now imports dependencies on a per-method basis.(:issue:`9713`)
321321
- Updated BigQuery connector to no longer use deprecated ``oauth2client.tools.run()`` (:issue:`8327`)
322322
- Bug in subclassed ``DataFrame``. It may not return the correct class, when slicing or subsetting it. (:issue:`9632`)
323+
- BUG in median() where non-float null values are not handled correctly (:issue:`10040`)

pandas/core/nanops.py

+1
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ def get_median(x):
285285

286286
if values.dtype != np.float64:
287287
values = values.astype('f8')
288+
values[mask] = np.nan
288289

289290
if axis is None:
290291
values = values.ravel()

pandas/tseries/tests/test_timedeltas.py

+9-1
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ def test_timedelta_ops(self):
614614
self.assertEqual(result, expected)
615615

616616
result = td.median()
617-
expected = to_timedelta('00:00:08')
617+
expected = to_timedelta('00:00:09')
618618
self.assertEqual(result, expected)
619619

620620
result = td.to_frame().median()
@@ -641,6 +641,14 @@ def test_timedelta_ops(self):
641641
for op in ['skew','kurt','sem','var','prod']:
642642
self.assertRaises(TypeError, lambda : getattr(td,op)())
643643

644+
# GH 10040
645+
# make sure NaT is properly handled by median()
646+
s = Series([Timestamp('2015-02-03'), Timestamp('2015-02-07')])
647+
self.assertEqual(s.diff().median(), timedelta(days=4))
648+
649+
s = Series([Timestamp('2015-02-03'), Timestamp('2015-02-07'), Timestamp('2015-02-15')])
650+
self.assertEqual(s.diff().median(), timedelta(days=6))
651+
644652
def test_timedelta_ops_scalar(self):
645653
# GH 6808
646654
base = pd.to_datetime('20130101 09:01:12.123456')

0 commit comments

Comments
 (0)