クレジットカードの明細をCSVで入手し、それをPandasのデータフレームに読み込もうとしましたが、いきなりつまずいてしまいました。その現象と対応内容について、まとめました。
現象
以下のコードを実行すると、ParseErrorが発生しました。
import pandas as pd
df = pd.read_csv('aaaaa.csv', encoding = 'shift_jis')
ParserError: Error tokenizing data. C error: Expected 2 fields in line 14, saw 3
原因
CSVの要素数が先頭が2だったのに、ある行から3に増えたところで、以上のエラーが発生します。
対応
一度、csvモジュールを使って、csvファイルをリストで読み込み、それをデータフレームに変換します。
import pandas as pd
import csv
pd.options.display.max_rows = None
pd.options.display.max_columns = None
with open("./aaaa.csv", "r", encoding="shift_jis", errors="", newline="" ) as f:
lst = csv.reader(f, delimiter=",")
df = pd.DataFrame(lst)
df