-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #66 from anmyachev/compare-columns
Add functions to compare Column objects with iterable references and to compare DataFrame objects with mapping references
- Loading branch information
Showing
31 changed files
with
335 additions
and
386 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,46 +1,44 @@ | ||
from __future__ import annotations | ||
|
||
import pandas as pd | ||
|
||
from tests.utils import bool_dataframe_1 | ||
from tests.utils import interchange_to_pandas | ||
from tests.utils import compare_column_with_reference | ||
|
||
|
||
def test_column_and(library: str) -> None: | ||
df = bool_dataframe_1(library, api_version="2023.09-beta") | ||
ns = df.__dataframe_namespace__() | ||
ser = df.col("a") | ||
other = df.col("b") | ||
result = df.assign((ser & other).rename("result")) | ||
result_pd = interchange_to_pandas(result)["result"] | ||
expected = pd.Series([True, True, False], name="result") | ||
pd.testing.assert_series_equal(result_pd, expected) | ||
expected = [True, True, False] | ||
compare_column_with_reference(result.col("result"), expected, dtype=ns.Bool) | ||
|
||
|
||
def test_column_or(library: str) -> None: | ||
df = bool_dataframe_1(library) | ||
ns = df.__dataframe_namespace__() | ||
ser = df.col("a") | ||
other = df.col("b") | ||
result = df.assign((ser | other).rename("result")) | ||
result_pd = interchange_to_pandas(result)["result"] | ||
expected = pd.Series([True, True, True], name="result") | ||
pd.testing.assert_series_equal(result_pd, expected) | ||
expected = [True, True, True] | ||
compare_column_with_reference(result.col("result"), expected, dtype=ns.Bool) | ||
|
||
|
||
def test_column_and_with_scalar(library: str) -> None: | ||
df = bool_dataframe_1(library) | ||
ns = df.__dataframe_namespace__() | ||
ser = df.col("a") | ||
other = True | ||
result = df.assign((other & ser).rename("result")) | ||
result_pd = interchange_to_pandas(result)["result"] | ||
expected = pd.Series([True, True, False], name="result") | ||
pd.testing.assert_series_equal(result_pd, expected) | ||
expected = [True, True, False] | ||
compare_column_with_reference(result.col("result"), expected, dtype=ns.Bool) | ||
|
||
|
||
def test_column_or_with_scalar(library: str) -> None: | ||
df = bool_dataframe_1(library) | ||
ns = df.__dataframe_namespace__() | ||
ser = df.col("a") | ||
other = True | ||
result = df.assign((other | ser).rename("result")) | ||
result_pd = interchange_to_pandas(result)["result"] | ||
expected = pd.Series([True, True, True], name="result") | ||
pd.testing.assert_series_equal(result_pd, expected) | ||
expected = [True, True, True] | ||
compare_column_with_reference(result.col("result"), expected, dtype=ns.Bool) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,11 @@ | ||
import pandas as pd | ||
|
||
from tests.utils import compare_dataframe_with_reference | ||
from tests.utils import integer_dataframe_1 | ||
from tests.utils import interchange_to_pandas | ||
|
||
|
||
def test_cast_integers(library: str) -> None: | ||
df = integer_dataframe_1(library) | ||
pdx = df.__dataframe_namespace__() | ||
result = df.assign(df.col("a").cast(pdx.Int32())) | ||
expected = pd.DataFrame({"a": [1, 2, 3], "b": [4, 5, 6]}).astype( | ||
{"a": "int32", "b": "int64"}, | ||
) | ||
result_pd = interchange_to_pandas(result) | ||
pd.testing.assert_frame_equal(result_pd, expected) | ||
ns = df.__dataframe_namespace__() | ||
result = df.assign(df.col("a").cast(ns.Int32())) | ||
expected = {"a": [1, 2, 3], "b": [4, 5, 6]} | ||
expected_dtype = {"a": ns.Int32, "b": ns.Int64} | ||
compare_dataframe_with_reference(result, expected, expected_dtype) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,66 +1,42 @@ | ||
from __future__ import annotations | ||
|
||
import pandas as pd | ||
|
||
from tests.utils import compare_dataframe_with_reference | ||
from tests.utils import integer_dataframe_6 | ||
from tests.utils import interchange_to_pandas | ||
|
||
|
||
def test_expression_sorted_indices_ascending(library: str) -> None: | ||
df = integer_dataframe_6(library) | ||
df.__dataframe_namespace__() | ||
ns = df.__dataframe_namespace__() | ||
col = df.col | ||
sorted_indices = col("b").sorted_indices() | ||
result = df.take(sorted_indices) | ||
result_pd = interchange_to_pandas(result) | ||
expected = pd.DataFrame( | ||
{ | ||
"a": [2, 2, 1, 1, 1], | ||
"b": [1, 2, 3, 4, 4], | ||
}, | ||
) | ||
pd.testing.assert_frame_equal(result_pd, expected) | ||
expected = {"a": [2, 2, 1, 1, 1], "b": [1, 2, 3, 4, 4]} | ||
compare_dataframe_with_reference(result, expected, dtype=ns.Int64) | ||
|
||
|
||
def test_expression_sorted_indices_descending(library: str) -> None: | ||
df = integer_dataframe_6(library) | ||
df.__dataframe_namespace__() | ||
ns = df.__dataframe_namespace__() | ||
col = df.col | ||
sorted_indices = col("b").sorted_indices(ascending=False) | ||
result = df.take(sorted_indices) | ||
result_pd = interchange_to_pandas(result) | ||
expected = pd.DataFrame( | ||
{ | ||
"a": [1, 1, 1, 2, 2], | ||
"b": [4, 4, 3, 2, 1], | ||
}, | ||
) | ||
pd.testing.assert_frame_equal(result_pd, expected) | ||
expected = {"a": [1, 1, 1, 2, 2], "b": [4, 4, 3, 2, 1]} | ||
compare_dataframe_with_reference(result, expected, dtype=ns.Int64) | ||
|
||
|
||
def test_column_sorted_indices_ascending(library: str) -> None: | ||
df = integer_dataframe_6(library).persist() | ||
df = integer_dataframe_6(library) | ||
ns = df.__dataframe_namespace__() | ||
sorted_indices = df.col("b").sorted_indices() | ||
result = df.take(sorted_indices) | ||
result_pd = interchange_to_pandas(result) | ||
expected = pd.DataFrame( | ||
{ | ||
"a": [2, 2, 1, 1, 1], | ||
"b": [1, 2, 3, 4, 4], | ||
}, | ||
) | ||
pd.testing.assert_frame_equal(result_pd, expected) | ||
expected = {"a": [2, 2, 1, 1, 1], "b": [1, 2, 3, 4, 4]} | ||
compare_dataframe_with_reference(result, expected, dtype=ns.Int64) | ||
|
||
|
||
def test_column_sorted_indices_descending(library: str) -> None: | ||
df = integer_dataframe_6(library).persist() | ||
df = integer_dataframe_6(library) | ||
ns = df.__dataframe_namespace__() | ||
sorted_indices = df.col("b").sorted_indices(ascending=False) | ||
result = df.take(sorted_indices) | ||
result_pd = interchange_to_pandas(result) | ||
expected = pd.DataFrame( | ||
{ | ||
"a": [1, 1, 1, 2, 2], | ||
"b": [4, 4, 3, 2, 1], | ||
}, | ||
) | ||
pd.testing.assert_frame_equal(result_pd, expected) | ||
expected = {"a": [1, 1, 1, 2, 2], "b": [4, 4, 3, 2, 1]} | ||
compare_dataframe_with_reference(result, expected, dtype=ns.Int64) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.