Skip to content

Commit 9abe295

Browse files
committed
BUG: Fixed regression in PeriodIndex loc
Closes pandas-dev#33964
1 parent 57d056a commit 9abe295

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
@@ -508,7 +508,11 @@ def get_loc(self, key, method=None, tolerance=None):
508508
# _get_string_slice will handle cases where grp < freqn
509509
assert grp >= freqn
510510

511-
if grp == freqn:
511+
# BusinessDay is a bit strange. It has a *lower* code, but we never parse
512+
# a string as "BusinessDay" resolution, just Day.
513+
if grp == freqn or (
514+
reso == Resolution.RESO_DAY and self.dtype.freq.name == "B"
515+
):
512516
key = Period(asdt, freq=self.freq)
513517
loc = self.get_loc(key, method=method, tolerance=tolerance)
514518
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)