Skip to content

Commit 9c060a8

Browse files
committed
Update frame.py
1 parent 21280ed commit 9c060a8

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

pandas/core/frame.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5165,14 +5165,22 @@ def lookup(self, row_labels, col_labels) -> np.ndarray:
51655165
# GH#33041
51665166
raise ValueError("DataFrame.lookup requires unique index and columns")
51675167

5168-
values = self.to_numpy()
5168+
# values = self.to_numpy()
51695169
ridx = self.index.get_indexer(row_labels)
51705170
cidx = self.columns.get_indexer(col_labels)
51715171
if (ridx == -1).any():
51725172
raise KeyError("One or more row labels was not found")
51735173
if (cidx == -1).any():
51745174
raise KeyError("One or more column labels was not found")
5175-
flat_index = ridx * len(self.columns) + cidx
5175+
5176+
sub = self.take(np.unique(cidx), axis=1)
5177+
if sub._is_mixed_type:
5178+
sub = sub.take(np.unique(ridx), axis=0)
5179+
ridx = sub.index.get_indexer(row_labels)
5180+
values = sub.to_numpy()
5181+
cidx = sub.columns.get_indexer(col_labels)
5182+
flat_index = ridx * len(sub.columns) + cidx
5183+
51765184
result = values.flat[flat_index]
51775185

51785186
if is_object_dtype(result):

0 commit comments

Comments
 (0)