【Streamlit】st.column_config.TextColumnの基本と使い方

Streamlit
この記事は約5分で読めます。

はじめに

データフレーム内にテキストデータが含まれている場合、その列をどのように表示すればより分かりやすくなるでしょうか?Streamlitのst.column_config.TextColumnを使うと、列のラベルやヘルプテキストの設定、入力制限の追加など、テキスト列を柔軟にカスタマイズできます。本記事では、このクラスの基本機能と実際の使用例を丁寧に解説します。

st.column_config.TextColumnとは

st.column_config.TextColumnは、データフレーム内のテキストデータを表示するための専用設定クラスです。以下のようなカスタマイズが可能です:

  • 列のラベル変更
  • ヘルプテキストの追加
  • 必須フィールドや最大文字数の設定
  • 入力値のバリデーション

公式のシグネチャは以下の通りです:

st.column_config.TextColumn(
    label=None,
    *,
    width=None,
    help=None,
    disabled=None,
    required=None,
    default=None,
    max_chars=None,
    validate=None
)

主なパラメータの解説

1. label

  • 概要: 列のラベルを指定します。
  • タイプ: str または None(デフォルト)。
  • :
    python TextColumn(label="ユーザー名")

2. width

  • 概要: 列の幅を指定します。
  • タイプ: int または None(デフォルト)。
  • :
    python TextColumn(width=200)

3. help

  • 概要: ヘルプテキストを設定します。ヘルプアイコンをホバーすると表示されます。
  • タイプ: str または None(デフォルト)。
  • :
    python TextColumn(help="この列にはユーザー名を入力してください")

4. disabled

  • 概要: 列を編集不可にします。
  • タイプ: bool(デフォルト: False)。
  • :
    python TextColumn(disabled=True)

5. required

  • 概要: 入力を必須にするかどうかを指定します。
  • タイプ: bool(デフォルト: False)。
  • :
    python TextColumn(required=True)

6. default

  • 概要: デフォルト値を設定します。
  • タイプ: str または None(デフォルト)。
  • :
    python TextColumn(default="未入力")

7. max_chars

  • 概要: 入力可能な最大文字数を指定します。
  • タイプ: int または None(デフォルト)。
  • :
    python TextColumn(max_chars=50)

8. validate

  • 概要: 入力値を検証する関数を指定します。
  • タイプ: 関数または None(デフォルト)。
  • :
    python TextColumn(validate=lambda x: x.isalpha())

実際の使用例

例1: 基本的な列設定

以下の例では、TextColumnを使って列にラベルとヘルプテキストを設定します。

import streamlit as st
import pandas as pd
from streamlit.column_config import TextColumn

# データフレームを作成
data = {"名前": ["Alice", "Bob", "Charlie"]}
df = pd.DataFrame(data)

# TextColumnの設定
column_config = {
    "名前": TextColumn(
        label="ユーザー名",
        help="登録されているユーザーの名前を表示します"
    )
}

# カスタム列設定でデータフレームを表示
st.data_editor(df, column_config=column_config)

結果

  • 列ヘッダーに「ユーザー名」が表示されます。
  • ヘルプアイコンをホバーすると、説明がポップアップで表示されます。

例2: 必須入力と最大文字数の制限

以下の例では、入力が必須であることと最大文字数を制限します。

import streamlit as st
import pandas as pd
from streamlit.column_config import TextColumn

# データフレームを作成
data = {"名前": ["Alice", "Bob", "Charlie"]}
df = pd.DataFrame(data)

# TextColumnの設定
column_config = {
    "名前": TextColumn(
        label="ユーザー名",
        required=True,
        max_chars=10
    )
}

# カスタム列設定でデータフレームを表示
st.data_editor(df, column_config=column_config)

結果

  • 「名前」列は必須入力になり、10文字を超えるテキストは入力できません。

例3: 入力値のバリデーション

バリデーションを追加して、テキストに特定の条件を課します。

import streamlit as st
import pandas as pd
from streamlit.column_config import TextColumn

# データフレームを作成
data = {"名前": ["Alice", "Bob", "Charlie"]}
df = pd.DataFrame(data)

# TextColumnの設定
column_config = {
    "名前": TextColumn(
        label="ユーザー名",
        validate=r"^\d+$"  # アルファベットのみを許可
    )
}

# カスタム列設定でデータフレームを表示
st.dataframe(df, column_config=column_config)

結果

  • 「名前」列にはアルファベット以外の文字を入力できません。

まとめ

st.column_config.TextColumnを使うことで、テキスト列の表示を簡単かつ柔軟にカスタマイズできます。ラベル変更や入力制限の設定、バリデーションの追加など、さまざまな用途に応用可能です。

公式ドキュメントはこちら:st.column_config.TextColumn

次回は数値データのカスタマイズに役立つst.column_config.NumberColumnについて解説します!お楽しみに。

最後までお読みいただき、ありがとうございました。

コメント

タイトルとURLをコピーしました