Skip to content

Commit a40464a

Browse files
authored
TST: Added test for query method with string dtype and null values (#54149)
added test
1 parent c64240c commit a40464a

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

pandas/tests/frame/test_query_eval.py

+28
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,34 @@ def test_query_string_scalar_variable(self, parser, engine):
10701070
r = df.query("Symbol == @symb", parser=parser, engine=engine)
10711071
tm.assert_frame_equal(e, r)
10721072

1073+
@pytest.mark.parametrize(
1074+
"in_list",
1075+
[
1076+
[None, "asdf", "ghjk"],
1077+
["asdf", None, "ghjk"],
1078+
["asdf", "ghjk", None],
1079+
[None, None, "asdf"],
1080+
["asdf", None, None],
1081+
[None, None, None],
1082+
],
1083+
)
1084+
def test_query_string_null_elements(self, in_list):
1085+
# GITHUB ISSUE #31516
1086+
parser = "pandas"
1087+
engine = "python"
1088+
expected = {i: value for i, value in enumerate(in_list) if value == "asdf"}
1089+
1090+
df_expected = DataFrame({"a": expected}, dtype="string")
1091+
df_expected.index = df_expected.index.astype("int64")
1092+
df = DataFrame({"a": in_list}, dtype="string")
1093+
res1 = df.query("a == 'asdf'", parser=parser, engine=engine)
1094+
res2 = df[df["a"] == "asdf"]
1095+
res3 = df.query("a <= 'asdf'", parser=parser, engine=engine)
1096+
tm.assert_frame_equal(res1, df_expected)
1097+
tm.assert_frame_equal(res1, res2)
1098+
tm.assert_frame_equal(res1, res3)
1099+
tm.assert_frame_equal(res2, res3)
1100+
10731101

10741102
class TestDataFrameEvalWithFrame:
10751103
@pytest.fixture

0 commit comments

Comments
 (0)