Pandas for Go, minus the Python
A DataFrame library that brings tabular data manipulation to Go without leaving the ecosystem.

What it does
dataframe-go gives Go developers a spreadsheet-like data structure for statistics, machine learning, and data exploration. It reads and writes CSV, JSONL, Parquet, Excel, and SQL databases; handles missing values as NaN; and supports sorting, filtering, interpolation, and time-series forecasting.
The interesting bit
The library leans into Go’s type system rather than fighting it. Each column is a typed Series (int64, float64, string, time.Time), with a generic escape hatch for custom types like civil.Date. It also plugs directly into gonum for statistics and can evaluate math expressions like sin(2*π*x/24) against columns.
Key highlights
- Import/export: CSV, JSONL, Parquet, MySQL, PostgreSQL, Excel
- Built-in interpolation (linear, spline, Lagrange) and forecasting (Holt-Winters)
- Cross-platform plotting via
go-chartintegration - Fake data generation for testing
- Pandas-compatible sub-package (marked “help required”)
- Manual lock/unlock iteration for concurrent access
Caveats
- The API is explicitly unstable; the authors plan to rewrite the entire package once Go generics landed (Go 1.18), collapsing multiple Series types into one generic type
- Locking is manual — you must
df.Lock()before iterating if you want safety - The README recommends pinning to a commit ID, not a branch
Verdict
Worth a look if you’re building data pipelines in Go and don’t want to shell out to Python. Skip it if you need API stability today or if your team is already invested in Polars/pandas — the generics rewrite may change everything.