Skip to content

Commit 14497df

Browse files
committed
TST: EA[..., slc]
1 parent 9a4ccc1 commit 14497df

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

pandas/core/arrays/sparse/array.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -817,6 +817,8 @@ def value_counts(self, dropna: bool = True):
817817
def __getitem__(self, key):
818818

819819
if isinstance(key, tuple):
820+
if len(key) and key[0] is Ellipsis:
821+
key = key[1:]
820822
if len(key) > 1:
821823
raise IndexError("too many indices for array.")
822824
key = key[0]

pandas/tests/extension/base/getitem.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,17 @@ def test_getitem_slice(self, data):
245245
result = data[slice(1)] # scalar
246246
assert isinstance(result, type(data))
247247

248+
def test_getitem_ellipsis_and_slice(self, data):
249+
# GH#40353 this is called from getitem_block_index
250+
result = data[..., :]
251+
self.assert_extension_array_equal(result, data)
252+
253+
result = data[..., :3]
254+
self.assert_extension_array_equal(result, data[:3])
255+
256+
result = data[..., ::2]
257+
self.assert_extension_array_equal(result, data[::2])
258+
248259
def test_get(self, data):
249260
# GH 20882
250261
s = pd.Series(data, index=[2 * i for i in range(len(data))])

pandas/tests/extension/json/array.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ def _from_factorized(cls, values, original):
8383
return cls([UserDict(x) for x in values if x != ()])
8484

8585
def __getitem__(self, item):
86+
if isinstance(item, tuple):
87+
if len(item) and item[0] is Ellipsis:
88+
item = item[1:]
89+
if len(item) > 1:
90+
raise IndexError("too many indices for array.")
91+
item = item[0]
92+
8693
if isinstance(item, numbers.Integral):
8794
return self.data[item]
8895
elif isinstance(item, slice) and item == slice(None):

0 commit comments

Comments
 (0)