Skip to main content

Draft implementation of the DataFrame Standard for pandas and polars

Project description

Build Status Coverage pre-commit.ci status

DataFrame Standard POC

standard-compliant DataFrame

Work-in-progress POC of what the DataFrame Standard might look like for pandas and polars.

What's this?

Please read our blog post! https://data-apis.org/blog/dataframe_standard_rfc/.

How to try this out

Here's an example of how you can try this out:

import pandas as pd
from dataframe_api_compat import pandas_standard
from dataframe_api_compat import polars_standard

def convert_to_standard_compliant_dataframe(df):
    if isinstance(df, pd.DataFrame):
        return pandas_standard.convert_to_standard_compliant_dataframe(df)
    elif isinstance(df, pl.DataFrame):
        return polars_standard.convert_to_standard_compliant_dataframe(df)
    else:
        raise TypeError(f"Got unexpected type: {type(df)}")

df = pd.DataFrame({'a': [1,2,3]})
df_std = convert_to_standard_compliant_dataframe(df)

The object df_std is a Standard-compliant DataFrame.

Installation

pip install git+https://github.com/MarcoGorelli/dataframe-api-compat

Testing

pytest --cov=dataframe_api_compat --cov=test_standard --cov-fail-under=100

100% branch coverage isn't the objective - it's the bare minimum.

Linting

pre-commit run --all-files

Type Checking

First, clone the dataframe_standard to some local path. Then, run:

MYPYPATH=<path to dataframe-api/spec/API_specification> mypy dataframe_api_compat
MYPYPATH=<path to dataframe-api/spec/API_specification> mypy polars_standard.py

For example, if you cloned both repos in the same place, this could be:

MYPYPATH=../dataframe-api/spec/API_specification/ mypy dataframe_api_compat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dataframe_api_compat-0.1.0.tar.gz (10.3 kB view hashes)

Uploaded Source

Built Distribution

dataframe_api_compat-0.1.0-py2.py3-none-any.whl (11.9 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page