2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Polars】ハマり小ネタ集

Last updated at Posted at 2024-08-04

最近よく使うPolars。
ハマったものを追記していくハマり小ネタ集を作る。

pl.whenで文字列型列が作れない

Polarsを使用していて以下エラーに遭遇

image.png

dateカラムから月の条件で四季の文字列が入った列を追加したかったのですがなぜか既存カラムを射影(pl.col(’spring’)みたいな)しにいってるような挙動のエラーが。

解決手段: pl.lit(’spring’)で記載

thenとotherwiseの文字列をpl.lit()でラップしたら解決。
確か前は文字列だけでもいけてた気がするんだけど破壊的変更の一つだったのかも。docには文字列例がないのでなかなか気づけなかった。

    df = df.with_columns(
        pl.when(pl.col('date').dt.month().is_in([4, 5, 6])).then(pl.lit("spring"))
        .when(pl.col('date').dt.month().is_in([7, 8, 9])).then(pl.lit("summer"))
        .when(pl.col('date').dt.month().is_in([10, 11, 12])).then(pl.lit("autumn"))
        .otherwise(pl.lit("winter"))
        .alias('season')
    )

エラー自体あるべき挙動なのかも少し謎。

lazyframeでconcatされない

pahtsにはリスト型でparquetファイルまでのパスが格納されている

データ定義は同じなので縦に結合して一つのlazyframeを作成しようとした
image.png

データが存在しない。

データフレームでやってみるとデータは存在。
image.png

解決手段: lazyframeをリスト格納してまとめてconcat

以下の実装に変更すると想定通りに
image.png

空のlazyframeがダメ?

import polarsするとカーネルがクラッシュする

レンタルサーバで環境構築してjupyterで実行するとクラッシュ。
原因調べているとimport polarsでクラッシュしていたことが分かった。
image.png

import polars後のエラー

The following required CPU features were not detected:
    avx2, fma, bmi1, bmi2, lzcnt, movbe
Continuing to use this version of Polars on this processor will likely result in a crash.
Install the `polars-lts-cpu` package instead of `polars` to run Polars with better compatibility.

解決手段: polars-lts-cpuをインストール

エラーから、polarsでは特定のcpu機能が必要とのことでそちらがなければ使えないとのこと。
調べてみるとレンタルサーバのCPUがXeon® E5-2690 というものらしく古いものだったかららしい?

代わりにpolars-lts-cpuをインストールすればいつも通りimport polarsが通るようになった。
キャプチャのように「カーネルがクラッシュしました。」しかでないし、エラーログ見てもundefined, Reasonで何が原因かも分からず原因特定かなり苦労した。
レンタルサーバで開発環境整えているかたは注意。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?