Google Colabでpandas DataFrameにスタイル適用する時に、既定のスタイルが外れてしまう問題の対応方法
Google ColaboratoryでpandasのDataFrameを表示する際、
「カラムの中の最大値を赤字にする」といったようなスタイルを適用する時に、
既定のスタイルが外れてしまう問題があったので、対応方法をまとめておきます。
そもそもpandasのDataFrameにスタイルを適用する時は、以下のStylerを使います。
pandas.io.formats.style.Styler | pandas API reference
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.io.formats.style.Styler.html
サンプルコードが見たい方は、
以下を見ると、同じカラムの背景色を黄色にする例があります。
pandas.io.formats.style.Styler.apply | pandas API reference
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.io.formats.style.Styler.apply.html
発生した問題
まず、スタイルを適用せずにDataFrameを出力します。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 2))
df
サンプルに習い、最大値の背景色を黄色にすると。
以下のように、既定のスタイルが外れて素朴なテーブル表示になってしまいます。
def highlight_max(x):
return ['background-color: yellow' if v == x.max() else '' for v in x]
df.style.apply(highlight_max)
対応方法
Google ColaboratoryのHTMLを見てみると、
pandasのDataFrameのtableタグに「dataframe」classが指定されているので。
set_table_attributesで、同じclassを指定してやると既定のスタイルが有効になります。
df.style.set_table_attributes('class="dataframe"').apply(highlight_max)
以上。