Skip to content

BUG: Series[timdelta64].var() should _not_ work #28289

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 45 commits into from
Nov 2, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
704b422
remove IX
jbrockmendel Jul 27, 2019
ec02d1f
remove ix-only methods
jbrockmendel Jul 27, 2019
db1567f
lint fixups
jbrockmendel Jul 27, 2019
c8ff4a0
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Jul 27, 2019
2c8ef9a
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 17, 2019
1ed8a96
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 19, 2019
8abdbaf
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 22, 2019
23d2eca
restore getitem needed by geopandas
jbrockmendel Aug 22, 2019
ecc8b36
remove xfail
jbrockmendel Aug 22, 2019
9f78ec7
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 22, 2019
3ca8c86
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 23, 2019
812b5fb
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 23, 2019
2e09bd6
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 24, 2019
966f749
restore and update tests per comments
jbrockmendel Aug 24, 2019
18033b4
remove test_ix
jbrockmendel Aug 24, 2019
b9f61cb
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 26, 2019
c319080
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 27, 2019
e467976
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 27, 2019
cb7ef3b
remove ix benchmarks
jbrockmendel Aug 27, 2019
52f4ff1
Merge branch 'master' of https://github.com/pandas-dev/pandas into rmix
jbrockmendel Aug 28, 2019
61feeeb
BUG: fix+test Series[timedelta64].var
jbrockmendel Aug 29, 2019
db73405
fix+test dataframe var with td64
jbrockmendel Aug 29, 2019
010e2ef
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Aug 29, 2019
04a546a
add mask support
jbrockmendel Aug 29, 2019
27fea95
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Aug 29, 2019
fb0374f
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Aug 30, 2019
9e401dd
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 2, 2019
965f0a7
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 3, 2019
fa1eb8c
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 3, 2019
58801d3
revert changes that got in via stash pop i think
jbrockmendel Sep 4, 2019
59b83e1
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 4, 2019
6687b69
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 6, 2019
d258e83
whatsnew
jbrockmendel Sep 6, 2019
5bd457d
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 7, 2019
f827fb0
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 8, 2019
619c394
remove no-longer-necessary check
jbrockmendel Sep 8, 2019
d37fcb3
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 18, 2019
c753617
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Sep 23, 2019
66bc863
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Oct 7, 2019
02a566b
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Oct 8, 2019
4d3d8ec
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Oct 21, 2019
94023db
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Oct 23, 2019
317bd2a
Merge branch 'master' of https://github.com/pandas-dev/pandas into tdvar
jbrockmendel Oct 25, 2019
9598c2f
CLN: use _get_values
jbrockmendel Oct 25, 2019
a6c6b87
blackify
jbrockmendel Oct 26, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions doc/source/whatsnew/v1.0.0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,8 @@ Datetimelike
- Bug in :class:`DataFrame` arithmetic operations when operating with a :class:`Series` with dtype `'timedelta64[ns]'` (:issue:`28049`)
- Bug in :func:`pandas.core.groupby.generic.SeriesGroupBy.apply` raising ``ValueError`` when a column in the original DataFrame is a datetime and the column labels are not standard integers (:issue:`28247`)
- Bug in :func:`pandas._config.localization.get_locales` where the ``locales -a`` encodes the locales list as windows-1252 (:issue:`23638`, :issue:`24760`, :issue:`27368`)
- Bug in :meth:`Series.var` failing to raise ``TypeError`` when called with ``timedelta64[ns]`` dtype (:issue:`28289`)
-

Timedelta
^^^^^^^^^
Expand Down
7 changes: 5 additions & 2 deletions pandas/core/nanops.py
Original file line number Diff line number Diff line change
Expand Up @@ -704,11 +704,14 @@ def nanstd(values, axis=None, skipna=True, ddof=1, mask=None):
>>> nanops.nanstd(s)
1.0
"""
orig_dtype = values.dtype
values, mask, dtype, dtype_max, fill_value = _get_values(values, skipna, mask=mask)

result = np.sqrt(nanvar(values, axis=axis, skipna=skipna, ddof=ddof, mask=mask))
return _wrap_results(result, values.dtype)
return _wrap_results(result, orig_dtype)


@disallow("M8")
@disallow("M8", "m8")
@bottleneck_switch(ddof=1)
def nanvar(values, axis=None, skipna=True, ddof=1, mask=None):
"""
Expand Down
1 change: 1 addition & 0 deletions pandas/core/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -3988,6 +3988,7 @@ def _reduce(
If we have an ndarray as a value, then simply perform the operation,
otherwise delegate to the object.
"""

delegate = self._values

if axis is not None:
Expand Down
14 changes: 11 additions & 3 deletions pandas/tests/reductions/test_reductions.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,11 +300,14 @@ def test_timedelta_ops(self):
assert result[0] == expected

# invalid ops
for op in ["skew", "kurt", "sem", "prod"]:
for op in ["skew", "kurt", "sem", "prod", "var"]:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's split this to a separate test that is paramterized (followon)

msg = "reduction operation '{}' not allowed for this dtype"
with pytest.raises(TypeError, match=msg.format(op)):
getattr(td, op)()

with pytest.raises(TypeError, match=msg.format(op)):
getattr(td.to_frame(), op)(numeric_only=False)

# GH#10040
# make sure NaT is properly handled by median()
s = Series([Timestamp("2015-02-03"), Timestamp("2015-02-07")])
Expand Down Expand Up @@ -636,8 +639,13 @@ def test_ops_consistency_on_empty(self, method):
assert pd.isna(result)

# timedelta64[ns]
result = getattr(Series(dtype="m8[ns]"), method)()
assert result is pd.NaT
tdser = Series([], dtype="m8[ns]")
if method == "var":
with pytest.raises(TypeError, match="operation 'var' not allowed"):
getattr(tdser, method)()
else:
result = getattr(tdser, method)()
assert result is pd.NaT

def test_nansum_buglet(self):
ser = Series([1.0, np.nan], index=[0, 1])
Expand Down