CUBE SUGAR CONTAINER

技術系のこと書きます。

Python: Polars で文字列が省略される文字数を変更する

Polars は DataFrame や Series に含まれる文字列が、デフォルトでは 32 文字までしか表示されず、それを超えると省略されてしまう。 今回は、その挙動を変更する方法について書く。 結論から先に述べると pl.Config.set_fmt_str_lengths() を使うことで、省略されずに表示される最大の文字数を指定できる。

使った環境は次のとおり。

$ sw_vers    
ProductName:        macOS
ProductVersion:     13.2.1
BuildVersion:       22D68
$ python -V            
Python 3.9.16
$ pip list | grep polars
polars            0.16.14

もくじ

下準備

あらかじめ Polars をインストールしておく。

$ pip install polars

Python のインタプリタを起動する。

$ python

Polars をインポートする。

>>> import polars as pl

文字列が省略される挙動を確認する

まずは、文字列が省略される挙動を確認する。

次のように 32 文字までは省略されずに表示される。

>>> pl.DataFrame({"a": ["a"*32]})
shape: (1, 1)
┌──────────────────────────────────┐
│ a                                │
│ ---                              │
│ str                              │
╞══════════════════════════════════╡
│ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa │
└──────────────────────────────────┘

しかし 33 文字以上になると、次のように後続の文字列が「...」と省略されてしまう。

>>> pl.DataFrame({"a": ["a"*33]})
shape: (1, 1)
┌─────────────────────────────────────┐
│ a                                   │
│ ---                                 │
│ str                                 │
╞═════════════════════════════════════╡
│ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... │
└─────────────────────────────────────┘

省略されずに表示される文字数の最大値を変更する

続いて pl.Config.set_fmt_str_lengths() を使って文字列が省略されずに表示される文字数の最大値を変更してみよう。

以下では最大値を 40 に設定している。

>>> pl.Config.set_fmt_str_lengths(n=40)
<class 'polars.cfg.Config'>

設定した状態で 40 文字の文字列を作ってみよう。

>>> pl.DataFrame({"a": ["a"*40]})
shape: (1, 1)
┌──────────────────────────────────────────┐
│ a                                        │
│ ---                                      │
│ str                                      │
╞══════════════════════════════════════════╡
│ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa │
└──────────────────────────────────────────┘

ちゃんと省略されずに表示された。

では、設定した値を 1 文字超える文字列を作ってみる。

>>> pl.DataFrame({"a": ["a"*41]})
shape: (1, 1)
┌─────────────────────────────────────────────┐
│ a                                           │
│ ---                                         │
│ str                                         │
╞═════════════════════════════════════════════╡
│ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... │
└─────────────────────────────────────────────┘

今度は超えた部分は「...」と省略された。

いじょう。

参考

pola-rs.github.io