Skip to content

Comparison with Other DataFrame Libraries

gaslamp is not the only DataFrame library — but it is the only one designed to run inside Google Apps Script. This page compares gaslamp with other popular options to help you understand where it fits.

Quick Comparison

gaslamp GAS raw API danfo.js arquero
Runs in GAS
No installation
Sheets integration ✅ direct ✅ native
DataFrame API ✅ full ❌ manual ✅ full ✅ full
Runtime type safety

Environment Compatibility

Environment gaslamp GAS raw API danfo.js arquero
GAS
Node.js ✅ (dev/test)
Browser

danfo.js and arquero are JavaScript DataFrames but depend on Node.js APIs unavailable in GAS. gaslamp is the only DataFrame library that runs in the GAS runtime.


Installation and Dependencies

Feature gaslamp GAS raw API danfo.js arquero
Installation in GAS ✅ Script ID (library) ✅ Built-in ❌ Not applicable ❌ Not applicable
External dependencies None None Node.js / npm Node.js / npm

gaslamp is added to a GAS project as a library via a Script ID — no package manager or build step required on the GAS side.


Google Sheets Integration

Feature gaslamp GAS raw API danfo.js arquero
Read from Sheet fromSheet / fromRange getValues()
Write to Sheet toSheet setValues()
No extra setup

With the GAS raw API, reading a sheet gives you any[][] — a plain 2D array with no structure. gaslamp wraps that call in fromSheet() and gives you a full DataFrame immediately.


DataFrame API

Feature gaslamp GAS raw API danfo.js arquero
Filtering filter() ❌ manual query() / loc filter()
Selection select() ❌ manual loc / iloc select()
Renaming rename() ❌ manual rename() rename()
Grouping groupBy() ❌ manual groupby() groupby() + rollup()
Sorting sortBy() ❌ manual sort_values() orderby()
Joining join() ❌ manual join() join()
Reshaping pivot() / melt() ❌ manual ⚠️ not implemented pivot() / fold()
Lazy evaluation LazyFrame
Expression builder Expression derive() + op

Since the author is a Python user, the API design is heavily inspired by pandas and polars. Method names like filter, groupBy, select, melt, and pivot should feel familiar to Python DataFrame users.


Runtime Type Safety

GAS executes JavaScript — TypeScript types are erased at runtime. Data from getValues() arrives as any[][] with no type information.

Feature gaslamp GAS raw API danfo.js arquero
Runtime type validation FlameWright / FlameFrame ⚠️ dtype inference
Schema definition ✅ composable guards
Error reporting ✅ per-row errors

Summary

Use gaslamp when:

  • Your data lives in Google Sheets and you want a DataFrame API without leaving GAS
  • You want to validate spreadsheet data types at runtime

Use danfo.js when:

  • You are building a Node.js or browser-based application
  • You want a pandas-like API in JavaScript
  • You are working with TensorFlow.js and need tensor conversion

Use arquero when:

  • You are building data visualizations with Observable or Vega/Vega-Lite
  • You need a dplyr-inspired relational query API
  • You are working with Apache Arrow data