Skip to content

Commit 233d51d

Browse files
sinhrksjorisvandenbossche
authored andcommitted
BUG: String indexing against object dtype may raise AttributeError (#14424)
1 parent aff20eb commit 233d51d

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

doc/source/whatsnew/v0.19.1.txt

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Bug Fixes
4040

4141

4242

43+
- Bug in string indexing against data with ``object`` ``Index`` may raise ``AttributeError`` (:issue:`14424`)
4344

4445

4546

pandas/indexes/base.py

+5
Original file line numberDiff line numberDiff line change
@@ -2966,6 +2966,11 @@ def _wrap_joined_index(self, joined, other):
29662966
name = self.name if self.name == other.name else None
29672967
return Index(joined, name=name)
29682968

2969+
def _get_string_slice(self, key, use_lhs=True, use_rhs=True):
2970+
# this is for partial string indexing,
2971+
# overridden in DatetimeIndex, TimedeltaIndex and PeriodIndex
2972+
raise NotImplementedError
2973+
29692974
def slice_indexer(self, start=None, end=None, step=None, kind=None):
29702975
"""
29712976
For an ordered Index, compute the slice indexer for input labels and

pandas/tests/indexing/test_indexing.py

+21
Original file line numberDiff line numberDiff line change
@@ -3613,6 +3613,27 @@ def test_iloc_non_unique_indexing(self):
36133613
result = df2.loc[idx]
36143614
tm.assert_frame_equal(result, expected, check_index_type=False)
36153615

3616+
def test_string_slice(self):
3617+
# GH 14424
3618+
# string indexing against datetimelike with object
3619+
# dtype should properly raises KeyError
3620+
df = pd.DataFrame([1], pd.Index([pd.Timestamp('2011-01-01')],
3621+
dtype=object))
3622+
self.assertTrue(df.index.is_all_dates)
3623+
with tm.assertRaises(KeyError):
3624+
df['2011']
3625+
3626+
with tm.assertRaises(KeyError):
3627+
df.loc['2011', 0]
3628+
3629+
df = pd.DataFrame()
3630+
self.assertFalse(df.index.is_all_dates)
3631+
with tm.assertRaises(KeyError):
3632+
df['2011']
3633+
3634+
with tm.assertRaises(KeyError):
3635+
df.loc['2011', 0]
3636+
36163637
def test_mi_access(self):
36173638

36183639
# GH 4145

0 commit comments

Comments
 (0)