I couldn't work out if the interchange dataframe (i.e. the dataframe returned from __dataframe__()) should also have a __dataframe__() method, e.g.
>>> import pandas as pd
>>> df = pd.DataFrame() # i.e. the top-level dataframe
>>> interchange_df1 = df.__dataframe__()
>>> interchange_df2 = interchange_df1.__dataframe__()
With the upstream of current adopters, we have a split on whether the interchange dataframe has this method.
| Library |
Top-level |
Interchange |
| pandas |
✔️ |
✔️ |
| vaex |
✔️ |
❌ |
| modin |
✔️ |
✔️ |
| cuDF |
✔️ |
❌ |
I had assumed that interchange dataframes should have __dataframe__() by virtue of it being a method in the DataFrame API object. I think it makes sense, as then from_dataframe()-like functions only need to check for __dataframe__() to support interchanging both top-level and interchange dataframes of different libraries.
If there is explicit specification somewhere in this regard then please give me a pointer! In any case, it might be worth clarifying in the __dataframe__() docstring where this method should be residing.
I couldn't work out if the interchange dataframe (i.e. the dataframe returned from
__dataframe__()) should also have a__dataframe__()method, e.g.With the upstream of current adopters, we have a split on whether the interchange dataframe has this method.
I had assumed that interchange dataframes should have
__dataframe__()by virtue of it being a method in the DataFrame API object. I think it makes sense, as thenfrom_dataframe()-like functions only need to check for__dataframe__()to support interchanging both top-level and interchange dataframes of different libraries.If there is explicit specification somewhere in this regard then please give me a pointer! In any case, it might be worth clarifying in the
__dataframe__()docstring where this method should be residing.