Skip to content

Commit d620710

Browse files
committed
Merge branch 'enh-lookup-subset' into enh-lookup
2 parents 48f1cde + 9c060a8 commit d620710

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

pandas/core/frame.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5171,14 +5171,15 @@ def lookup(self, row_labels, col_labels) -> np.ndarray:
51715171
raise KeyError("One or more row labels was not found")
51725172
if (cidx == -1).any():
51735173
raise KeyError("One or more column labels was not found")
5174-
if len(set(col_labels)) < len(self.columns):
5175-
sub = self.take(np.unique(cidx), axis=1)
5176-
values = sub.to_numpy()
5177-
cidx = sub.columns.get_indexer(col_labels)
5178-
flat_index = ridx * len(sub.columns) + cidx
5179-
else:
5180-
values = self.to_numpy()
5181-
flat_index = ridx * len(self.columns) + cidx
5174+
5175+
sub = self.take(np.unique(cidx), axis=1)
5176+
if sub._is_mixed_type:
5177+
sub = sub.take(np.unique(ridx), axis=0)
5178+
ridx = sub.index.get_indexer(row_labels)
5179+
values = sub.to_numpy()
5180+
cidx = sub.columns.get_indexer(col_labels)
5181+
flat_index = ridx * len(sub.columns) + cidx
5182+
51825183
result = values.flat[flat_index]
51835184

51845185
if is_object_dtype(result):

0 commit comments

Comments
 (0)