Skip to content

Commit eb8cd5a

Browse files
committed
BUG: update tests (pandas-dev#39189)
1 parent d7a3ef6 commit eb8cd5a

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

Diff for: pandas/core/computation/pytables.py

+12-6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from pandas.compat.chainmap import DeepChainMap
1212

1313
from pandas.core.dtypes.common import is_list_like
14+
from pandas.core.series import Series
1415

1516
import pandas.core.common as com
1617
from pandas.core.computation import expr, ops, scope as _scope
@@ -209,12 +210,8 @@ def stringify(value):
209210
v = Timedelta(v, unit="s").value
210211
return TermValue(int(v), v, kind)
211212
elif meta == "category":
212-
metadata = extract_array(self.metadata, extract_numpy=True)
213-
if v not in metadata:
214-
result = -1
215-
else:
216-
result = metadata.searchsorted(v, side="left")
217-
return TermValue(result, result, "integer")
213+
term_value = self._convert_category_value(self.metadata, v)
214+
return term_value
218215
elif kind == "integer":
219216
v = int(float(v))
220217
return TermValue(v, v, kind)
@@ -243,6 +240,15 @@ def stringify(value):
243240
else:
244241
raise TypeError(f"Cannot compare {v} of type {type(v)} to {kind} column")
245242

243+
@staticmethod
244+
def _convert_category_value(metadata: Series, value: Any) -> TermValue:
245+
metadata = extract_array(metadata, extract_numpy=True)
246+
if value not in metadata:
247+
result = -1
248+
else:
249+
result = metadata.searchsorted(value, side="left")
250+
return TermValue(result, result, "integer")
251+
246252
def convert_values(self):
247253
pass
248254

Diff for: pandas/tests/computation/test_pytables.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from typing import Any
2+
import pytest
3+
import numpy as np
4+
5+
from pandas.core.computation.pytables import TermValue, BinOp
6+
from pandas import Series
7+
8+
9+
@pytest.mark.parametrize(
10+
"value, expected_results",
11+
[("q", TermValue(-1, -1, "integer")), ("a", TermValue(0, 0, "integer"))],
12+
)
13+
def test__convert_value(value: Any, expected_results: TermValue):
14+
metadata = Series(np.array(['a', 'b', 's']))
15+
16+
result = BinOp._convert_category_value(metadata, value)
17+
18+
assert (
19+
result.kind == expected_results.kind
20+
and result.value == expected_results.value
21+
and result.converted == expected_results.converted
22+
)

0 commit comments

Comments
 (0)