|
32 | 32 | )
|
33 | 33 | from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna
|
34 | 34 |
|
| 35 | +from pandas.core.construction import extract_array |
| 36 | + |
35 | 37 | bn = import_optional_dependency("bottleneck", raise_on_missing=False, on_version="warn")
|
36 | 38 | _BOTTLENECK_INSTALLED = bn is not None
|
37 | 39 | _USE_BOTTLENECK = False
|
@@ -284,14 +286,8 @@ def _get_values(
|
284 | 286 |
|
285 | 287 | mask = _maybe_get_mask(values, skipna, mask)
|
286 | 288 |
|
287 |
| - if is_datetime64tz_dtype(values): |
288 |
| - # lib.values_from_object returns M8[ns] dtype instead of tz-aware, |
289 |
| - # so this case must be handled separately from the rest |
290 |
| - dtype = values.dtype |
291 |
| - values = getattr(values, "_values", values) |
292 |
| - else: |
293 |
| - values = lib.values_from_object(values) |
294 |
| - dtype = values.dtype |
| 289 | + values = extract_array(values, extract_numpy=True) |
| 290 | + dtype = values.dtype |
295 | 291 |
|
296 | 292 | if is_datetime_or_timedelta_dtype(values) or is_datetime64tz_dtype(values):
|
297 | 293 | # changing timedelta64/datetime64 to int64 needs to happen after
|
@@ -758,7 +754,7 @@ def nanvar(values, axis=None, skipna=True, ddof=1, mask=None):
|
758 | 754 | >>> nanops.nanvar(s)
|
759 | 755 | 1.0
|
760 | 756 | """
|
761 |
| - values = lib.values_from_object(values) |
| 757 | + values = extract_array(values, extract_numpy=True) |
762 | 758 | dtype = values.dtype
|
763 | 759 | mask = _maybe_get_mask(values, skipna, mask)
|
764 | 760 | if is_any_int_dtype(values):
|
@@ -985,7 +981,7 @@ def nanskew(
|
985 | 981 | >>> nanops.nanskew(s)
|
986 | 982 | 1.7320508075688787
|
987 | 983 | """
|
988 |
| - values = lib.values_from_object(values) |
| 984 | + values = extract_array(values, extract_numpy=True) |
989 | 985 | mask = _maybe_get_mask(values, skipna, mask)
|
990 | 986 | if not is_float_dtype(values.dtype):
|
991 | 987 | values = values.astype("f8")
|
@@ -1069,7 +1065,7 @@ def nankurt(
|
1069 | 1065 | >>> nanops.nankurt(s)
|
1070 | 1066 | -1.2892561983471076
|
1071 | 1067 | """
|
1072 |
| - values = lib.values_from_object(values) |
| 1068 | + values = extract_array(values, extract_numpy=True) |
1073 | 1069 | mask = _maybe_get_mask(values, skipna, mask)
|
1074 | 1070 | if not is_float_dtype(values.dtype):
|
1075 | 1071 | values = values.astype("f8")
|
|
0 commit comments