pandas.read_csv() で次のようなエラーに遭遇したことはありませんか?
pandas.errors.ParserError: Error tokenizing data. C error: Expected 5 fields in line 12, saw 7
あるいは
pandas.errors.ParserError: ',' expected after '"'
といったメッセージです。これは 区切り文字や引用符の扱いが想定と違う ときに起こります。
主な原因は次のパターンです。
- CSV がタブ区切り (
\t) やセミコロン区切り (;) だった - 1列内にカンマが含まれていて、引用符で囲まれていなかった
 - エスケープ文字がなく、ダブルクオートが途中で途切れている
 
解決法 1: 区切り文字を正しく指定する #
import pandas as pd
# セミコロン区切り
df = pd.read_csv("sales.csv", sep=";")
# タブ区切り
df = pd.read_csv("log.tsv", sep="\t")
ファイルの先頭数行を head -n やメモ帳で確認し、実際の区切り文字を把握してから sep= を設定しましょう。
解決法 2: 引用符とエスケープを合わせる #
df = pd.read_csv("survey.csv", quotechar="'", escapechar="\\")
Excel から書き出した CSV では セル内のカンマ や 改行 が混入していることがあります。
引用符 (quotechar) を明示し、バックスラッシュなどでエスケープされている場合は escapechar も指定します。
解決法 3: Python エンジンで柔軟に解析する #
標準の C エンジンでは扱えない複雑なパターンも engine="python" へ切り替えると読み込めることがあります。
df = pd.read_csv(
    "messy.csv",
    engine="python",
    sep=",",
    quotechar='"',
    on_bad_lines="warn",  # 破損行は警告だけ出してスキップ
)
on_bad_lines="skip"にすると崩れた行を無視できます。
データ損失を防ぎたい場合はwarnにしてログだけ取り、後で該当行を手動で修正しましょう。
チェックリスト #
- 区切り文字 は想定通りか (
sepを設定したか) - セル内カンマ・改行 がある列には適切な引用符が付いているか
 - Excel 等で書き出す際、CSV UTF-8 (カンマ区切り) 以外を選んでいないか
 - 破損行がある場合は 
on_bad_linesでログを出しながら再確認したか