こんにちは、JS2IIUです。
Streamlitでのst.dataframeやst.data_editorでリスト要素を見やすく表示するためのst.column_config.ListColumnを紹介します。今回もよろしくお願いします。

はじめに
Streamlitのst.column_config.ListColumnは、データフレーム内でリスト形式のデータを管理しやすくするための機能です。リストデータを見やすく表示するだけでなく、操作性も向上させることができます。本記事では、ListColumnの基本的な機能とオプション、そして活用方法を具体的なサンプルコードと共に解説します。
st.column_config.ListColumnとは
st.column_config.ListColumnは、データフレームの列をリスト形式で表示するためのカスタムクラスです。この機能を使うと、各セルに複数のデータを含む列を視覚的に整えることができます。特に、タグやタスクリストなどのデータを扱う際に便利です。
主な用途
- タグやラベルの表示: 複数の要素をリスト形式で表示。
- リストデータの視覚化: リスト要素を簡潔で読みやすい形式に整列。
- データの操作性向上: リスト内の要素数や内容を効率的に確認。
主なオプション
label: 列名を設定。help: 列の用途や説明をツールチップとして表示。width: セルの横幅を指定する。“small”, “medium”, “large”, or None
実際の使用例
以下は、プロジェクトごとに関連するタスクをリスト形式で管理する例です。
import streamlit as st
import pandas as pd
from streamlit.column_config import ListColumn
# データフレームを作成
data = {
"Project": ["Project A", "Project B", "Project C"],
"Tasks": [["Design", "Prototype", "Testing"],
["Research", "Development"],
["Planning", "Execution", "Review"]]
}
df = pd.DataFrame(data)
# ListColumnで列をカスタマイズ
column_config = {
"Tasks": ListColumn(
label="タスクリスト",
width='large',
help="プロジェクトに関連するタスクを表示します",
)
}
# カスタム列設定でデータフレームを表示
st.dataframe(df, column_config=column_config)
サンプルコードの解説
1. データ作成
- プロジェクト名とタスクリストをリスト形式で格納し、
pandas.DataFrameを作成。 - 各プロジェクトに関連する複数のタスクを1セルにリストとして保持。
2. ListColumnの設定
label: 列名を「タスクリスト」に設定。help: ツールチップとして列の用途を説明。
3. データフレーム表示
st.dataframeでカスタム列設定を適用。タスクそれぞれが分かりやすく表示され、視覚的に整います。
応用例: タスク数によるプロジェクトのフィルタリング
以下のコードは、タスクが一定数以上のプロジェクトを抽出する方法を示しています。
import streamlit as st
import pandas as pd
from streamlit.column_config import ListColumn
# データフレームを作成
data = {
"Project": ["Project A", "Project B", "Project C"],
"Tasks": [["Design", "Prototype", "Testing"],
["Research", "Development"],
["Planning", "Execution", "Review"]]
}
df = pd.DataFrame(data)
# ListColumnで列をカスタマイズ
column_config = {
"Tasks": ListColumn(
label="タスクリスト",
width='large',
help="プロジェクトに関連するタスクを表示します",
)
}
# カスタム列設定でデータフレームを表示
st.dataframe(df, column_config=column_config)
# タスク数を追加
df["Task Count"] = df["Tasks"].apply(len)
# タスクが2つ以上のプロジェクトを抽出
filtered_projects = df[df["Task Count"] >= 2]
# 結果を表示
st.write("タスクが2つ以上のプロジェクト:", filtered_projects)

ポイント
apply(len)を使用してリストの要素数を計算し、新しい列として追加。- 条件フィルタリングを用いて、タスク数が一定以上のプロジェクトを抽出。
注意点
- リスト形式データの整合性
ListColumnを利用する場合、対象列のデータがすべてリスト形式である必要があります。- 非リスト形式のデータが含まれるとエラーの原因になる可能性があります。
まとめ
st.column_config.ListColumnを使用することで、リスト形式のデータを扱うデータフレームを直感的で使いやすい形に整えることが可能です。タグやタスクリストの表示、データのフィルタリングなど、様々なシナリオで役立ちます。
次回の記事では、リンクデータを管理するst.column_config.LinkColumnについて解説します。どうぞお楽しみに!
公式ドキュメント: st.column_config.ListColumn
最後まで読んでいただきありがとうございます。73



コメント