【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したのですが、その値に特殊文字が含まれていたようです。
こういったとき、冒頭のコードを実行すると、特殊文字が含まれているカラム名を特定できます。
(真面目に前処理すればいい話ですが、そこを面倒がってこのようなことをしました。。。)
検索対象とする文字列に過不足があれば、適宜追加してください。