いろいろやってみよう

完璧を目指すより、まず終わらせろ

【Python】LightGBM等で使用できない文字が含まれているカラムを抽出する方法

結論

以下コードで抽出できます。

def extract_special_json_chars_columns(df):
    # 特殊なJSON文字を検索する正規表現パターン
    special_chars_pattern = r'[",\[\]\{\}:]'
    
    # 各カラム名に対して、特殊なJSON文字を含むかどうかを判定
    special_chars_columns = [col for col in df.columns if pd.Series(col).str.contains(special_chars_pattern).any()]
    
    return special_chars_columns

# 特殊なJSON文字を含むカラム名のリストを取得
special_chars_columns = extract_special_json_chars_columns(train)

# 特殊なJSON文字を含むカラム名のリストを出力
print(special_chars_columns)

エラー「Do not support special JSON characters in feature name.」が出た。

モデルのベースラインを作ろうと、雑に前処理してLightGBMにデータを突っ込んだら、以下のエラーが出ました。

LightGBMError: Do not support special JSON characters in feature name.

検索すると、カラム名json特殊文字が含まれていると、上記のエラーが出るようです。
雑に前処理した際、カテゴリ変数の中身を見ずにone-hot-encodingしたのですが、その値に特殊文字が含まれていたようです。

こういったとき、冒頭のコードを実行すると、特殊文字が含まれているカラム名を特定できます。
(真面目に前処理すればいい話ですが、そこを面倒がってこのようなことをしました。。。)

検索対象とする文字列に過不足があれば、適宜追加してください。