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); passassets="inline"to force re-emission, orassets="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); passassets=Falsefor 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),width_mode('equal-risk'default, or'coverage'to maximize the count of fully-shown cells),rows(cap the viewport to ~N rows, vertical scroll for the rest) /max_height(raw CSS, e.g.'400px'),render_cap,eager_cells,worker(default False — data is inlined), plusname(status line) andindex(include the DataFrame index as leading columns). Dark mode follows the host page (prefers-color-scheme; JupyterLab dark themes included).
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file csv_grid-3.1.0.tar.gz.
File metadata
- Download URL: csv_grid-3.1.0.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c357bcebacc96eef7316d292da3d702f42deb71f51cc2b7bdb0663bff25773eb
|
|
| MD5 |
54a715dbabdb1188eb575ae8cb6c38b2
|
|
| BLAKE2b-256 |
f7ff0895849bacfcb1c0b3731b1bb7a4ad712fa6b7fea6ef8f6ab38cccd8f694
|
File details
Details for the file csv_grid-3.1.0-py3-none-any.whl.
File metadata
- Download URL: csv_grid-3.1.0-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2be16ebb0e9cf1ed488e1fd6646e36dd4125e418a820eb6fef1dd8731e7e696
|
|
| MD5 |
ce9e41f50490beaae7e6b2f74c330dcb
|
|
| BLAKE2b-256 |
4e6709bee9e42e52864949ae153f40e8c0919b9b3bd2ebde1167d0cbbbbeef64
|