diff --git a/packages/vaex-core/vaex/dataframe_protocol.py b/packages/vaex-core/vaex/dataframe_protocol.py index ad89c8bee7..e697adffa0 100644 --- a/packages/vaex-core/vaex/dataframe_protocol.py +++ b/packages/vaex-core/vaex/dataframe_protocol.py @@ -10,7 +10,7 @@ For a background and spec, see: * https://data-apis.org/blog/dataframe_protocol_rfc/ * https://data-apis.org/dataframe-protocol/latest/index.html - + Notes ----- - Interpreting a raw pointer (as in ``Buffer.ptr``) is annoying and unsafe to @@ -701,6 +701,9 @@ def __init__(self, df: vaex.dataframe.DataFrame, nan_as_null: bool = False, allo self._nan_as_null = nan_as_null self._allow_copy = allow_copy + def __dataframe__(self, nan_as_null : bool = False, allow_copy : bool = True) -> _VaexDataFrame: + return _VaexDataFrame(self._df, nan_as_null=nan_as_null, allow_copy=allow_copy) + @property def metadata(self) -> Dict[str, Any]: return {} diff --git a/tests/dataframe_protocol_test.py b/tests/dataframe_protocol_test.py index 1adce0252b..1adcde3cd3 100644 --- a/tests/dataframe_protocol_test.py +++ b/tests/dataframe_protocol_test.py @@ -294,6 +294,8 @@ def test_VaexDataFrame(): assert df2.select_columns((0, 2))._df[:, 0].tolist() == df2.select_columns_by_name(("x", "z"))._df[:, 0].tolist() assert df2.select_columns((0, 2))._df[:, 1].tolist() == df2.select_columns_by_name(("x", "z"))._df[:, 1].tolist() + assert_dataframe_equal(df2.__dataframe__(), df) + def test_chunks(df_factory): x = np.arange(10)