Skip to content

Commit f43a843

Browse files
BUG: Fixed regression in PeriodIndex loc (#34736)
Closes #33964
1 parent 26b9477 commit f43a843

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

pandas/core/indexes/period.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,11 @@ def get_loc(self, key, method=None, tolerance=None):
514514
# _get_string_slice will handle cases where grp < freqn
515515
assert grp >= freqn
516516

517-
if grp == freqn:
517+
# BusinessDay is a bit strange. It has a *lower* code, but we never parse
518+
# a string as "BusinessDay" resolution, just Day.
519+
if grp == freqn or (
520+
reso == Resolution.RESO_DAY and self.dtype.freq.name == "B"
521+
):
518522
key = Period(asdt, freq=self.freq)
519523
loc = self.get_loc(key, method=method, tolerance=tolerance)
520524
return loc

pandas/tests/indexes/period/test_indexing.py

+6
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,12 @@ def test_get_value(self):
693693
result2 = idx2.get_value(input2, p1)
694694
tm.assert_series_equal(result2, expected2)
695695

696+
def test_loc_str(self):
697+
# https://github.com/pandas-dev/pandas/issues/33964
698+
index = pd.period_range(start="2000", periods=20, freq="B")
699+
series = pd.Series(range(20), index=index)
700+
assert series.loc["2000-01-14"] == 9
701+
696702
@pytest.mark.parametrize("freq", ["H", "D"])
697703
def test_get_value_datetime_hourly(self, freq):
698704
# get_loc and get_value should treat datetime objects symmetrically

0 commit comments

Comments
 (0)