Class: LazyFrame¶
A lazy evaluation wrapper specialized in Expression-based filtering.
Queues multiple filter operations using Expression instances and applies internal optimizations (predicate fusion, short-circuit evaluation) before materialization.
Remarks¶
LazyFrame accepts only Expression instances for filtering, enabling: - Predicate fusion: multiple filters are combined via AND logic - Short-circuit evaluation: evaluation stops as soon as a condition fails - Future optimizations: predicate reordering by selectivity, pushdown
Use LazyFrame.from(df) to create an instance. Do not construct directly.
Example¶
const df = BareFrame.fromColumns({
name: ["Alice", "Bob", "Charlie"],
age: [25, 17, 30],
});
const result = LazyFrame.from(df)
.filter(Expression.col("age").ge(18))
.filter(Expression.col("name").startsWith("C"))
.collect();
// name | age
// Charlie | 30
Since¶
0.68.0
DataFrame¶
from()¶
staticfrom(source):LazyFrame
Create a new LazyFrame from a BareFrame.
Parameters¶
source¶
Source BareFrame to wrap
Returns¶
LazyFrame
New LazyFrame with empty expression queue
Example¶
const lazy = LazyFrame.from(df)
.filter(Expression.col("age").ge(18));
Since¶
0.68.0
filter()¶
filter(
expr):LazyFrame
Queue a filter operation with an Expression.
Parameters¶
expr¶
Expression instance defining the filter condition
Returns¶
LazyFrame
New LazyFrame with the filter expression appended
Remarks¶
The expression is stored but not evaluated until collect() is invoked.
Multiple filter calls are combined via AND logic during materialization.
Important: Do not modify the expression after passing it to filter().
Example¶
const adults = LazyFrame.from(df)
.filter(Expression.col("age").ge(18))
.collect();
Since¶
0.68.0
collect()¶
collect():
BareFrame
Execute all queued filter operations and return the materialized result.
Returns¶
Materialized BareFrame with all filter expressions applied
Remarks¶
All queued expressions are fused into a single combined predicate using AND logic. This enables short-circuit evaluation: if any condition fails, the row is rejected immediately without evaluating remaining conditions.
Example¶
const filtered = LazyFrame.from(df)
.filter(Expression.col("status").eq("active"))
.filter(Expression.col("age").gt(21))
.collect();
Since¶
0.68.0