Skip to content

Commit 8756531

Browse files
committed
TST: Added test for query method with dtype='string' and null values pandas-dev#31516
1 parent 607316c commit 8756531

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

pandas/tests/frame/test_query_eval.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,35 @@ 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, parser, engine, in_list):
1085+
# GITHUB ISSUE #31516
1086+
skip_if_no_pandas_parser(parser)
1087+
expected = {
1088+
i: value
1089+
for value, i in zip(in_list, range(len(in_list)))
1090+
if value is not None
1091+
}
1092+
df_expected = DataFrame({"a": expected})
1093+
df = DataFrame({"a": in_list})
1094+
res1 = df.query("a == 'asdf'", parser=parser, engine=engine)
1095+
res2 = df[df["a"] == "asdf"]
1096+
res3 = df.query("a <= 'asdf'", parser=parser, engine=engine)
1097+
tm.assert_frame_equal(res1, df_expected)
1098+
tm.assert_frame_equal(res1, res2)
1099+
tm.assert_frame_equal(res1, res3)
1100+
tm.assert_frame_equal(res2, res3)
1101+
10731102

10741103
class TestDataFrameEvalWithFrame:
10751104
@pytest.fixture

0 commit comments

Comments
 (0)