Skip to content

Commit b0dbffd

Browse files
committed
cleanup
1 parent 7b89f1b commit b0dbffd

File tree

4 files changed

+56
-14
lines changed

4 files changed

+56
-14
lines changed

pandas/core/indexes/base.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -613,14 +613,14 @@ def _values(self):
613613
index | values | _values | _ndarray_values |
614614
----------------- | -------------- -| ----------- | --------------- |
615615
CategoricalIndex | Categorical | Categorical | codes |
616-
DatetimeIndex[tz] | ndarray[M8ns] | DTI[tz] | datetime@UTC |
616+
DatetimeIndex[tz] | ndarray[M8ns] | DTI[tz] | ndarray[M8ns] |
617617
618618
In the near-future, we'll implement two more.
619619
620-
index | values | _values | ndarray_values |
621-
----------------- | --------------- | ----------- | -------------- |
622-
PeriodIndex | ndarray[object] | PeriodArray
623-
IntervalIndex | IntervalArray | ndarray[Interval]
620+
index | values | _values | _ndarray_values |
621+
----------------- | --------------- | ----------- | --------------- |
622+
PeriodIndex | ndarray[object] | PeriodArray | ndarray[int] |
623+
IntervalIndex | ndarray[object] | PeriodArray | ndarray[object] |
624624
625625
See Also
626626
--------

pandas/core/indexes/category.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ def _evaluate_compare(self, other):
797797

798798
def _delegate_method(self, name, *args, **kwargs):
799799
""" method delegation to the ._values """
800-
method = getattr(self.values, name)
800+
method = getattr(self._values, name)
801801
if 'inplace' in kwargs:
802802
raise ValueError("cannot use inplace with CategoricalIndex")
803803
res = method(*args, **kwargs)

pandas/core/indexes/multi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,7 +799,7 @@ def values(self):
799799
box = hasattr(lev, '_box_values')
800800
# Try to minimize boxing.
801801
if box and len(lev) > len(lab):
802-
taken = lev._box_values(algos.take_1d(lev._values,
802+
taken = lev._box_values(algos.take_1d(lev._ndarray_values,
803803
lab))
804804
elif box:
805805
taken = algos.take_1d(lev._box_values(lev._ndarray_values),

pandas/tests/test_base.py

Lines changed: 49 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,13 +1241,6 @@ def test_values_consistent(array, expected_type, dtype):
12411241
assert r_values.dtype == dtype
12421242

12431243

1244-
def test_values_periodindex():
1245-
arr = pd.period_range("2017", periods=4, freq='D')
1246-
result = arr._values
1247-
expected = np.array(arr.astype(object))
1248-
tm.assert_numpy_array_equal(result, expected)
1249-
1250-
12511244
@pytest.mark.parametrize('array, expected', [
12521245
(np.array([0, 1]), np.array([0, 1])),
12531246
(np.array(['0', '1']), np.array(['0', '1'], dtype=object)),
@@ -1267,3 +1260,52 @@ def test_ndarray_values(array, expected):
12671260
r_values = pd.Index(array)._ndarray_values
12681261
tm.assert_numpy_array_equal(l_values, r_values)
12691262
tm.assert_numpy_array_equal(l_values, expected)
1263+
1264+
1265+
def test_values_multiindex_datetimesindex():
1266+
# Test to ensure we hit the boxing / nobox part of MI.values
1267+
ints = np.arange(10**18, 10**18 + 5)
1268+
naive = pd.DatetimeIndex(ints)
1269+
aware = pd.DatetimeIndex(ints, tz='US/Central')
1270+
1271+
idx = pd.MultiIndex.from_arrays([naive, aware])
1272+
result = idx.values
1273+
1274+
outer = pd.DatetimeIndex([x[0] for x in result])
1275+
tm.assert_index_equal(outer, naive)
1276+
1277+
inner = pd.DatetimeIndex([x[1] for x in result])
1278+
tm.assert_index_equal(inner, aware)
1279+
1280+
# n_lev > n_lab
1281+
result = idx[:2].values
1282+
1283+
outer = pd.DatetimeIndex([x[0] for x in result])
1284+
tm.assert_index_equal(outer, naive[:2])
1285+
1286+
inner = pd.DatetimeIndex([x[1] for x in result])
1287+
tm.assert_index_equal(inner, aware[:2])
1288+
1289+
1290+
def test_values_multiindex_datetimesindex():
1291+
# Test to ensure we hit the boxing / nobox part of MI.values
1292+
ints = np.arange(2007, 2012)
1293+
pidx = pd.PeriodIndex(ints, freq='D')
1294+
1295+
idx = pd.MultiIndex.from_arrays([ints, pidx])
1296+
result = idx.values
1297+
1298+
outer = pd.Int64Index([x[0] for x in result])
1299+
tm.assert_index_equal(outer, pd.Int64Index(ints))
1300+
1301+
inner = pd.PeriodIndex([x[1] for x in result])
1302+
tm.assert_index_equal(inner, pidx)
1303+
1304+
# n_lev > n_lab
1305+
result = idx[:2].values
1306+
1307+
outer = pd.Int64Index([x[0] for x in result])
1308+
tm.assert_index_equal(outer, pd.Int64Index(ints[:2]))
1309+
1310+
inner = pd.PeriodIndex([x[1] for x in result])
1311+
tm.assert_index_equal(inner, pidx[:2])

0 commit comments

Comments
 (0)