Recipes
Short, copy-ready answers to common shaping tasks.
Join a lookup table
from larkspur import Frame, derive
rates = {r["ccy"]: float(r["usd"]) for r in Frame.read_csv("rates.csv")}
priced = Frame.read_csv("orders.csv") | derive(
usd=lambda r: round(float(r["amount"]) * rates[r["ccy"]], 2)
)
Aggregate with a plain dict
totals = {}
for r in Frame.read_csv("sales.csv"):
totals[r["sku"]] = totals.get(r["sku"], 0) + int(r["qty"])
Reshape between formats
from larkspur import Frame, select
Frame.read_ndjson("events.ndjson") \
| select("ts", "user", "action") \
| Frame.write_csv # attach a sink at the end
Sample a large file
import random
from larkspur import Frame, where
sample = Frame.read_csv("huge.csv") | where(lambda r: random.random() < 0.01)
sample.write_csv("sample.csv")