こんにちは、JS2IIUです。
Streamlitでデータフレームを表示する際に使えるチェックボックス機能を提供するst.column_config.CheckboxColumnについて説明します。Todoリストなど、チェックボックスを活用したい場面に有効です。今回もよろしくお願いします。
はじめに
データフレーム内でチェックボックスを利用することで、ユーザーが直感的に選択や状態管理を行えるようになります。Streamlitのst.column_config.CheckboxColumnを使うと、チェックボックス列を簡単に追加し、デフォルトの状態やカスタマイズを柔軟に設定できます。本記事では、CheckboxColumnの基本的な使い方から応用例まで、詳しく解説します。
st.column_config.CheckboxColumnとは
st.column_config.CheckboxColumnは、データフレーム内にチェックボックス列を追加してカスタマイズできるStreamlitのクラスです。このクラスを利用することで、以下のような機能を簡単に実現できます:
- チェックボックスの列名や説明を設定
- デフォルトのチェック状態を指定
- インタラクティブな行選択や状態管理
パラメータの詳細
以下は、CheckboxColumnで利用可能な主要なパラメータです。
1. label
列の名前を指定します。データフレームに表示される列名として使用され、指定しない場合はデータフレームの元の列名が使われます。
- 例:
"完了"を設定すると、列名が「完了」と表示されます。
2. width
列の幅を設定します。デフォルトでは自動調整されますが、特定の幅を指定することでデザインを調整できます。
- 例:
width=100とすると、列の幅を固定で100pxに設定します。
3. help
チェックボックス列の補足説明を指定します。ユーザーが列名にカーソルを合わせると、ツールチップとして表示されます。
- 例:
"タスクが完了した場合にチェックを入れます"と設定すると、ユーザーに追加の説明を提供できます。
4. disabled
列内のすべてのチェックボックスを無効化するかどうかを設定します。True を指定すると、チェックボックスが非アクティブになります。
- デフォルト:
False - 例: ユーザーが変更できない列を作成したい場合に使用します。
5. required
この列が必須かどうかを指定します。True を設定すると、全行で必ずチェックボックスが設定されている必要があります。
- デフォルト:
False - 例: データの整合性を保つために使用します。
6. default
チェックボックスの初期状態を指定します。True または False を設定可能です。
- デフォルト:
None(指定しない場合はデータフレーム内の値を使用) - 例:
default=Trueを設定すると、すべての行がデフォルトでチェックされます。
主な用途
- タスク管理: 完了状態をチェックボックスで管理。
- 行選択: ユーザーがデータフレーム内で必要な行を選択。
- データ操作: チェックされた行に基づいてデータ処理を実行。
実際の使用例
以下に、CheckboxColumnを利用した基本的な例を示します。
例: タスク管理用のチェックボックス列
import streamlit as st
import pandas as pd
from streamlit.column_config import CheckboxColumn
# データフレームを作成
data = {
"Task": ["Task A", "Task B", "Task C"],
"Complete": [False, True, False] # 初期状態
}
df = pd.DataFrame(data)
# CheckboxColumnで列をカスタマイズ
column_config = {
"Complete": CheckboxColumn(
label="完了",
help="タスクが完了した場合にチェックを入れます",
default=False # デフォルトは未完了
)
}
# カスタム列設定でデータフレームを表示
st.data_editor(df, column_config=column_config)

サンプルコードの解説
- データ作成
タスク名(Task)と完了状態(Complete)を含むデータフレームを作成します。 CheckboxColumnの設定
label: 列名を「完了」に設定。help: チェックボックスの機能を説明するテキストを追加。default: デフォルトを未完了(False)に設定。
- データフレーム表示
チェックボックス列が動的にレンダリングされ、ユーザーが完了状態を変更可能になります。
応用例: チェックされた行のみをフィルタリング
チェックされたタスクだけを抽出して別の操作に使いたい場合の例を紹介します。
# ユーザーが選択した状態を取得
selected_tasks = df[df["Complete"] == True]["Task"]
# 選択されたタスクを表示
st.write("選択されたタスク:", selected_tasks.tolist())

ポイント
- チェックされた行のみを抽出して表示します。
- この方法を応用すれば、選択されたデータに基づいた処理を実行できます。
注意点
- デフォルト値の影響
defaultは初期状態のみを設定するため、ユーザーが操作した結果を反映させるにはリアルタイムのデータ更新が必要です。 - データの保存
ユーザー操作の結果をバックエンドに送信する場合は、保存用の仕組みを設計する必要があります。
まとめ
st.column_config.CheckboxColumnを活用することで、データフレームに動的なチェックボックス列を簡単に追加できます。タスクの管理や行選択といった用途で特に効果的です。次回は、選択肢を提供できるドロップダウンメニューを作成するst.column_config.SelectboxColumnについて解説します。お楽しみに!
公式ドキュメントはこちら: st.column_config.CheckboxColumn


コメント