はじめに
データフレーム内にテキストデータが含まれている場合、その列をどのように表示すればより分かりやすくなるでしょうか?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について解説します!お楽しみに。
最後までお読みいただき、ありがとうございました。


コメント