レコード形式のテキストファイルを読み込もうとしてread_csvを使ったらエラーが出た話
- 24列からなるデータを読み込もうとしたら...
df = pd.read_csv('test.txt')
# エラーメッセージ
ParserError: Error tokenizing data. C error: Expected 1 fields in line 18, saw 3
原因
- read_csvは引数を指定しなければ、","カンマ区切りのファイルしか受け付けない。
- このテキストファイルの場合は区切り文字が”\t”(タブ文字)だった。
解決法
- read_csvの代わりにread_tableを使えばよい。read_tableはデフォルトで区切り文字が"\t"(タブ文字)になっているので、このファイルを扱うのに適している。
大事な知識
- csv の正称は comma-separated value で、名前にある通り区切り文字が "," (コンマ)のファイルを指す。
- 可変長レコードなる概念が存在する。わかりやすいサイト
- タブについてちゃんと理解しよう
- 区切り文字が "," だけでなく "\t"(タブ) の場合もある。