Skip to main content

Emit csv-viewer's CsvGrid interactive tables from pandas DataFrames (Jupyter / Quarto / static HTML).

Project description

csv_grid

Python emitter for CsvGrid, the embeddable interactive table of the csv-viewer project: render a pandas DataFrame as a sortable, filterable, type-aware grid in Jupyter, Quarto (.qmd), or any static HTML you generate.

The grid re-infers column types from the data exactly as the viewer app does (numbers right with greater_tables-style formatting, dates ISO and centered, fzf search, equal-risk column widths). NaN / None become blank cells.

Install

uv add csv-grid              # or: pip install csv-grid

or local path install from a clone of this repo:

uv add --editable path/to/csv-viewer/python

The grid's built JS/CSS assets ship inside the package (refreshed by the repo's npm run build).

Use

from csv_grid import show, to_html

show(df)                          # Jupyter / qmd cell: display the grid
show(df, align="llrcr", fmt=[None, None, ",d", "year", ",.2f"])

html = to_html(df, name="results.df", assets="inline")   # fragment string
  • show(df, **options) displays via IPython. The JS + CSS assets are emitted once per kernel session (so once per rendered page); pass assets="inline" to force re-emission, or assets="https://…/base" to load them from a URL instead of inlining.
  • to_html(df, **options) returns an HTML fragment. The first fragment on a page should carry the assets (assets="inline" — the default — or a base URL); pass assets=False for subsequent tables.
  • payload(df) returns the {records, columns} dict the grid consumes, if you want to ship data yourself.
  • Options mirror the JS API in snake_case: global_search, column_filters, sortable, status_bar, expand_buttons, align ('llrcr…'), formats/fmt (per-column [,][.N](f|d|%|e|s), 'year', 'eng', None = auto), render_cap, eager_cells, worker (default False — data is inlined), plus name (status line) and index (include the DataFrame index as leading columns).

Dates are emitted ISO (yyyy-mm-dd, with hh:mm only when a column has non-midnight times); integral float columns are emitted as integers so the grid's integer/year rules apply.

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

csv_grid-3.0.5.tar.gz (29.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

csv_grid-3.0.5-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file csv_grid-3.0.5.tar.gz.

File metadata

  • Download URL: csv_grid-3.0.5.tar.gz
  • Upload date:
  • Size: 29.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for csv_grid-3.0.5.tar.gz
Algorithm Hash digest
SHA256 a33ca2151cb74f50d706958e9bfaa963c4a5a089d46a72a808f94f7982eee8ab
MD5 e91ca405f2fb334c6e6c2a0751caf3d6
BLAKE2b-256 fdc20be1dd0c1f0446908966282676a00523f52bab0e56a179e27edf39826dad

See more details on using hashes here.

File details

Details for the file csv_grid-3.0.5-py3-none-any.whl.

File metadata

  • Download URL: csv_grid-3.0.5-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for csv_grid-3.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 4b2a289fd33c6f5010073d1f092731830b6db09e68d8a2687186cd8152b12880
MD5 a9ab978ba0625068f91db52de1d2e29c
BLAKE2b-256 7866a6e7fab9ec93dc2c6e26d1cd5577c114bcbef2f66a6c132e09ac93a16363

See more details on using hashes here.

Supported by

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