#dataframe #pandas #analytics #columnar

fp-io

IO layer for frankenpandas: CSV, JSON, JSONL, Parquet, HDF5, Excel, Feather, Arrow IPC, Pickle, Stata, SQL (SqlConnection with SQLite default backend)

4 releases

Uses new Rust 2024

0.2.0 Jul 27, 2026
0.1.2 Jun 22, 2026
0.1.1 Jun 21, 2026
0.1.0 Jun 8, 2026

#37 in #pandas

Download history 16/week @ 2026-06-02 17/week @ 2026-06-09 31/week @ 2026-06-16 1/week @ 2026-06-23 78/week @ 2026-06-30 158/week @ 2026-07-07 56/week @ 2026-07-14 48/week @ 2026-07-21 104/week @ 2026-07-28 98/week @ 2026-08-04 207/week @ 2026-08-11 99/week @ 2026-08-18

537 downloads per month
Used in 5 crates (4 directly)

Custom license

12MB
266K SLoC

fp-io

IO layer for frankenpandas: CSV, JSON, JSONL, Parquet, Excel, Feather, Arrow IPC, SQL.

Part of the frankenpandas workspace.

Supported formats

Format Read Write Options
CSV read_csv_str / read_csv write_csv_string delimiter, na_values, index_col, usecols, nrows, skiprows, dtype
JSON read_json_str / read_json write_json_string 5 orients (Records, Columns, Index, Split, Values)
JSONL read_jsonl_str / read_jsonl write_jsonl_string One object per line, union-key detection
Parquet read_parquet_bytes / read_parquet write_parquet_bytes Arrow RecordBatch integration
Excel read_excel_bytes / read_excel write_excel_bytes sheet_name, has_headers, index_col
Feather read_feather_bytes write_feather_bytes Arrow IPC file + stream
Arrow IPC read_ipc_stream_bytes write_ipc_stream_bytes Stream format
SQL read_sql / read_sql_table write_sql SqlConnection trait; SQLite today

SQL backend expansion (PostgreSQL / MySQL) is tracked under br-frankenpandas-fd90 (slices 2-3 open).

When to depend on fp-io directly

Most users should depend on the umbrella frankenpandas crate which re-exports the IO functions. Direct dependency makes sense when:

  • You need IO primitives but not the full DataFrame arithmetic layer.
  • You are writing a streaming pipeline that routes through fp-columnar without materializing a full DataFrame.

Status

Stable for covered formats. Fuzz regression corpus runs on every PR (br-frankenpandas-zjme). Differential conformance against live pandas runs in CI (br-frankenpandas-d6xa). IoError is #[non_exhaustive] per br-frankenpandas-tne4.

Dependencies

~60MB
~1M SLoC