トップ / 集約・構造変換

pivot

行の値を列に展開する(縦持ちから横持ちへ)。

SNOWPARK 静的検証のみ

df.pivot("department", ["sales", "eng"]).sum("salary")

POLARS 実行確認済み

ldf.pivot(on="department", on_columns=["sales", "eng"], values="salary", aggregate_function="sum")

挙動・設計の違い

SnowparkはSQLのPIVOT構文に直結し、展開する列名の一覧を静的に指定することでクエリレベルで安全に列を生成する。Polarsはメモリ上でハッシュテーブルを組み替えて新しい列を作る。

移行時の落とし穴

Polars 1.43.2ではLazyFrame.pivot()を直接呼び出せる(実機で確認済み)。ただしDataFrame(Eager)版のpivot()と違い、on_columns(展開後の列名の一覧)を明示的に渡すことが必須で、省略するとTypeErrorになる。「LazyFrameからpivotは呼べず必ずcollect()を挟む必要がある」という情報を見かけることがあるが、少なくとも1.43.2ではこれは誤りで、正しくは「呼べるがon_columnsの指定が必須」という違いになる。

集約・構造変換の他のメソッド

出典・検証情報

Polars 1.43.2 で実行確認 / Snowpark Python SDK 1.54.0 で静的検証(2026-08-22)