Skip to content

Commit bc28a12

Browse files
committed
[BUG] fix .at for multiindexed series
Addresses: GH26989
1 parent 19624de commit bc28a12

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

pandas/core/indexing.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from pandas.errors import AbstractMethodError
88
from pandas.util._decorators import doc
99

10+
1011
from pandas.core.dtypes.common import (
1112
is_hashable,
1213
is_integer,
@@ -2031,6 +2032,10 @@ def __getitem__(self, key):
20312032
raise ValueError("Invalid call for scalar access (getting)!")
20322033

20332034
key = self._convert_key(key)
2035+
2036+
if isinstance(self.obj, ABCSeries) and len(key) > 1:
2037+
key = [key]
2038+
20342039
return self.obj._get_value(*key, takeable=self._takeable)
20352040

20362041
def __setitem__(self, key, value):
@@ -2042,6 +2047,10 @@ def __setitem__(self, key, value):
20422047

20432048
if not isinstance(key, tuple):
20442049
key = _tuplify(self.ndim, key)
2050+
2051+
if isinstance(self.obj, ABCSeries) and len(key) > 1:
2052+
key = [key]
2053+
20452054
if len(key) != self.ndim:
20462055
raise ValueError("Not enough indexers for scalar access (setting)!")
20472056
key = list(self._convert_key(key, is_setter=True))

pandas/tests/series/indexing/test_indexing.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -923,3 +923,14 @@ def test_getitem_2d_no_warning():
923923
series = pd.Series([1, 2, 3], index=[1, 2, 3])
924924
with tm.assert_produces_warning(None):
925925
series[:, None]
926+
927+
928+
def test_multiindex_at_get():
929+
series = pd.Series([1, 2], index=[[1, 2], [3, 4]])
930+
assert series.at[1, 3] == 1
931+
932+
933+
def test_multiindex_at_set():
934+
series = pd.Series([1, 2], index=[[1, 2], [3, 4]])
935+
series.at[1, 3] = 3
936+
assert series.at[1, 3] == 3

0 commit comments

Comments
 (0)