pandasでDataFrameの差分をハイライト表示する方法

pythonのpandas でデータの差分を確認する方法です

2つのDataFrameをセル単位で比較し、値が一致しないセルをハイライト表示します

import pandas as pd

def style_diff(col, target=None, props=''):
    if col.name in target.columns:
        t = target[col.name]
        return [props if t[ridx] != val else '' for ridx, val in col.items()]
    else:
        return [props for _ in col]

# テスト用のデータフレーム.Bの末尾が3と5で一致していません
df1 = pd.DataFrame({'A': [1,2,3], 'B': [1,2,3]})
df2 = pd.DataFrame({'A': [1,2,3], 'B': [1,2,5]})

# 不一致の5がハイライト表示されます
display(df2.style.apply(style_diff, target=df1, props='background-color: yellow;', axis=0))


エクセル形式のファイルとしても出力できます

df2.style\
     .apply(style_diff, target=df1, props='background-color: yellow;',axis=0)\
     .to_excel("output.xlsx",engine='openpyxl')