Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify if interchange dataframes should also have __dataframe__() #80

Open
honno opened this issue Jul 14, 2022 · 3 comments
Open

Clarify if interchange dataframes should also have __dataframe__() #80

honno opened this issue Jul 14, 2022 · 3 comments

Comments

@honno
Copy link
Member

honno commented Jul 14, 2022

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.

@rgommers
Copy link
Member

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'm fairly sure we discussed this once or twice, and that the answer is yes but that there is an inconsistency between spec and implementations. Here is what the spec says currently:

return {
"dataframe": self, # DataFrame object adhering to the protocol
"version": 0 # Version number of the protocol
}

And IIRC the implementations just return self. My recollection is that we agreed to make all the implementations consistent, and then update the spec. @vnlitvinov please correct me if I'm wrong here.

@rgommers
Copy link
Member

The relevant spec change to return self (or a 'DataFrame' instance in the type annotation) is gh-74, which is about to be merged.

rgommers added a commit to rgommers/vaex that referenced this issue Sep 13, 2022
This will align the implementation with those in other libraries,
xref data-apis/dataframe-api#80
rgommers added a commit to rgommers/vaex that referenced this issue Sep 13, 2022
This will align the implementation with those in other libraries,
xref data-apis/dataframe-api#80
rgommers added a commit to rgommers/vaex that referenced this issue Sep 13, 2022
This will align the implementation with those in other libraries,
xref data-apis/dataframe-api#80
rgommers added a commit to rgommers/cudf that referenced this issue Sep 13, 2022
This will align the implementation with those in other libraries,
xref data-apis/dataframe-api#80.
rapids-bot bot pushed a commit to rapidsai/cudf that referenced this issue Sep 21, 2022
This will align the implementation with those in other libraries, xref data-apis/dataframe-api#80.

Cc @shwina

Authors:
  - Ralf Gommers (https://github.com/rgommers)

Approvers:
  - Ashwin Srinath (https://github.com/shwina)

URL: #11692
maartenbreddels pushed a commit to rgommers/vaex that referenced this issue Sep 23, 2022
This will align the implementation with those in other libraries,
xref data-apis/dataframe-api#80
maartenbreddels pushed a commit to vaexio/vaex that referenced this issue Sep 23, 2022
This will align the implementation with those in other libraries,
xref data-apis/dataframe-api#80
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants