【解決法】pandasのCSV読み込みでParserErrorが出たときの対処法|Expected xx fieldsエラーとは?

当ページのリンクには広告が含まれています。
230222アイキャッチ

📉「pandasでCSVを読み込もうとしたらエラーが出た!」
🛠「行によって列数がバラバラでうまく読み込めない…」

こんなトラブルに直面した方向けに、この記事では以下を丁寧に解説します。

  • よくあるpandas.errors.ParserErrorの原因
  • 直接編集せずに読み込むためのPythonコード
  • read_csvのパラメータ活用法
目次

❗ 発生したエラー:ParserErrorとは?

csvファイルのデータをPythonのpandasで読み込むときに以下のエラーとなってしまいはまりました。

pandas.errors.ParserError: Error tokenizing data. C error: Expected 24 fieldder._tokenize_rowss in line 4, saw 28  

このエラーは、行と列のデータが不規則な場合に発生します。

列がやたら多いCSVデータで発生しました。

この記事では、エラーの一つ「pandas.errors.ParserError」の原因と具体的な解決方法について解説します。

✅ 原因:CSVファイルの構造不一致

  • CSVの3行目までは24列なのに、4行目で28列ある
  • ヘッダー行やコメント行などで形式が揃っていない
  • 空欄やカンマの過不足など、人の手で編集されたCSVによくある問題

💡 解決方法:read_csvの「names」で先に列名を定義する

pandasのread_csv()には、列名を手動で指定できるオプションがあります。これを使えば、列ズレを強制的に吸収できます。

import pandas as pd

# 仮に100列分の名前を先に用意
col_names = ['col_{}'.format(i) for i in range(100)]

# 列名を明示的に指定して読み込む
df = pd.read_csv('test.csv', names=col_names, engine='python')

print(df.head())

というわけで、PandasでCSVファイルが読み込めないときに、先に列名を作るとエラーを回避することができます。

✅ この方法のポイント

  • 不揃いな行でも無理やり読み込める
  • 不要な列は後で削除すればOK
  • データが崩れてもエラーで止まらず確認できる

🔧 その他のread_csvオプションも活用しよう

パラメータ効果
error_bad_lines=False(旧)読み込み時に異常な行をスキップ(※将来廃止予定)
on_bad_lines='skip'(新)異常行スキップの新方式
engine='python'柔軟な読み込み(CエンジンではなくPython処理)
skiprows=N最初のN行を読み飛ばす(ヘッダー飛ばしなどに便利)

まとめ

トラブル内容解決アプローチ
pandas.errors.ParserError列数の不一致による読み込みエラー
解決法namesで列名指定 / on_bad_lines='skip'の活用
備考エラー発生行を特定して直接修正 or ログ出力も有効

関連記事

記事タイトル説明
Google Colaboratoryアップデート後のSeleniumエラー解決法:コードコピペで解決!Google Colaboratoryのアップデート後に生じるSeleniumエラーの解決法を紹介します。
ChatGPTのCode InterpreterのCSVファイルの扱いについての注意点ChatGPTでPythonを使う際のCSVファイルの読み込みエラーの対策について説明します。
関連記事

Python関連書籍

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

こんにちは、Dr. Harv です。専門医としてのキャリアを積む一方で、資産運用、副業、ポイ活にも取り組んでいます。
このブログ「dr-harv.com」では、日々の日常、投資の知見、趣味など幅広いトピックを扱っています。より良い未来につながることをコンセプトにしています。読者の皆様にとって何か役立つ情報を提供できれば幸甚です。

目次