こんにちは、JS2IIUです。今回は、StreamlitでDataFrameを扱う際に、ドロップダウンリストを使う方法を紹介していきます。今回もよろしくお願いします。

はじめに
データフレーム内で特定の選択肢をリストから選べる列を追加したい場合、Streamlitのst.column_config.SelectboxColumnが便利です。このクラスを使うことで、ユーザーが簡単に選択肢を選べるインターフェースをデータフレーム内に組み込むことができます。本記事では、SelectboxColumnの基本的な設定や応用例を解説します。
st.column_config.SelectboxColumnとは
st.column_config.SelectboxColumnは、データフレームに選択式の列(ドロップダウンメニュー)を追加できるStreamlitのクラスです。これにより、ユーザーが事前に定義された選択肢から値を選択できるようになります。
主な用途
- カテゴリデータの入力:各行に対してカテゴリを指定する。
- 選択肢ベースのデータ管理:事前に定義したオプションから選択可能にする。
- インタラクティブなフィルタリング:選択内容を基にデータを絞り込む。
各パラメータの説明
以下にst.column_config.SelectboxColumnの主要パラメータを解説します。
label (str, オプション)
列の名前を指定します。データフレームに表示されるヘッダー名として利用されます。
- 例:
"優先度"
width (int, オプション)
列の幅をピクセル単位で指定します。指定しない場合、自動調整されます。
- 例:
width=200
help (str, オプション)
選択ボックスの説明文をツールチップ形式で表示します。ユーザーが列ヘッダー上にマウスを置くと表示されます。
- 例:
"タスクの優先度を選択してください"
disabled (bool, オプション)
選択ボックスを無効化するかを指定します。Trueに設定すると、ユーザーは値を変更できません。
- 例:
disabled=True
required (bool, オプション)
この列での値選択を必須とするかを指定します。Trueにすると、空の値を許可しません。
- 例:
required=True
options (list, 必須)
選択肢として利用可能な値をリスト形式で指定します。
このパラメータは必須であり、値を指定しない場合エラーになります。
- 例:
["High", "Medium", "Low"]
default (任意型, オプション)
列内の各セルに設定する初期値を指定します。options内に存在する値である必要があります。
- 例:
default="Medium"
実際の使用例
以下に、SelectboxColumnを利用した基本的な例を示します。
例:優先度を選択できるタスク管理システム
import streamlit as st
import pandas as pd
from streamlit.column_config import SelectboxColumn
# データフレームを作成
data = {
"Task": ["Task A", "Task B", "Task C"],
"Priority": ["High", "Medium", "Low"] # 初期値
}
df = pd.DataFrame(data)
# SelectboxColumnで列をカスタマイズ
column_config = {
"Priority": SelectboxColumn(
label="優先度",
help="タスクの優先度を選択してください",
options=["High", "Medium", "Low"], # 選択肢
default="Medium" # 初期選択値
)
}
# カスタム列設定でデータフレームを表示
st.data_editor(df, column_config=column_config)
サンプルコードの解説
- データ作成
タスク名(Task)とその優先度(Priority)を持つデータフレームを作成します。初期値はPriority列に直接指定されています。 - SelectboxColumnの設定
label:列名を「優先度」に設定します。help:列の説明をツールチップとして表示します。options:選べる選択肢を指定します。default:初期選択値を"Medium"に設定します。
- データフレーム表示
Priority列が選択ボックスとして表示され、ユーザーが選択内容を変更可能です。
応用例:選択内容に基づくフィルタリング
選択された優先度に基づいてタスクをフィルタリングする例を以下に示します。
# 選択された優先度のタスクを取得
filtered_tasks = df[df["Priority"] == "High"]["Task"]
# フィルタリング結果を表示
st.write("優先度が高いタスク:", filtered_tasks.tolist())
ポイント
- 指定された優先度(例:
High)に応じてデータをフィルタリングします。 - ユーザーの選択内容を条件として柔軟に活用可能です。
注意点
- 選択肢の設定
optionsには必ず値のリストを指定する必要があります。これを指定しないとエラーが発生します。 - データ更新とリアルタイム表示
データフレーム内の選択内容を保存または他のコンポーネントで利用する場合は、適切なイベント処理を設計してください。
まとめ
st.column_config.SelectboxColumnを利用すれば、データフレームに選択式インターフェースを簡単に追加できます。カテゴリデータの管理やユーザー操作が必要なアプリケーションで特に便利です。次回は、日時情報を管理するためのst.column_config.DatetimeColumnについて解説します。お楽しみに!
公式ドキュメントはこちら:
st.column_config.SelectboxColumn


コメント