Quarto による DataFrame の表示テスト

blog
tech
tech-quarto
Author

uma-chan

Published

2024-09-08

Modified

2025-04-13

Pandas の DataFrame をウェブサイト一覧表作成に転用するための実験記事です。

以下のように使用すれば CSV ファイルでタグを付与した形でウェブサイト一覧を管理できます。

1. ライブラリのインストール

#| include: true
!python3 -m pip install pandas
!python3 -m pip install --upgrade jinja2

2. 関数定義

#| include: true
import numpy as np
import pandas as pd

df_all = pd.read_csv('../assets/2024-09-08-quarto-df/quarto-df.csv')


def make_clickable(url, title):
    return f'<a href="{url}">{title}</a>'


def extract_tag(tag, df=df_all):
    _df = df[df['Tags'].str.contains(tag)].copy()

    # 欠損埋め
    _df = _df.fillna({'Date': '9999-12-31'})
    _df = _df.fillna('-')

    # HACK: __init__.py を強調させないためのワークアラウンド
    _df['Title'] = _df['Title'].replace(
            '__init__.py', '__ init __.py', regex=True
        )

    # 日付とクリック可能なページ名の表示
    _df = _df[['Date', 'Title', 'URL']].sort_values(
            ['Date', 'Title'], ascending=[False, True]
        )
    _df.index = np.arange(1, len(_df) + 1)
    _df['Website'] = _df.apply(
            lambda row: make_clickable(row['URL'], row['Title']), axis=1
        )
    _df = _df[['Date', 'Website']].to_html(escape=False, index=False)
    return _df

3. CSV 内容確認

!cat ../assets/2024-09-08-quarto-df/quarto-df.csv

4. TagA

#| code-fold: false
extract_tag('TagA')

5. TagB

#| code-fold: true
extract_tag('TagB')