pandasのDataFrameにread_csvでCSVファイルを読み込む際、
OSError: Initializing from file failed
になってしまう場合がある。
今回はこの Initializing failed
の原因と対策について紹介する。
現象
pandasのDataFrameにread_csvでCSVファイルを読み込もうとすると、エラーが発生してしまう。
import pandas as pd print("Read multi-byte csv.") df = pd.read_csv("ほげ.csv") # OSError: Initializing from file failed
"Initializing failed" の原因
Initializing failed
が発生する原因は2つ。
- 読み込もうとしているCSVのファイル名に2バイト文字を使っている
- pandasのバージョンが古い
この2つの原因が合わさった際にエラーが起こる。
CSVファイルに2バイト文字
2バイト文字はひらがなやカタカナ、漢字のような「やや横に広い文字」のことである。
反対に1バイト文字は、数字やアルファベットのような「半角で細めな文字」である。
pandasから read_csv
を行う際に、ファイル名がマルチバイト対応されておらずにエラーになってしまう。
pandasのバージョンが古い
ファイル読み込み時のマルチバイト対応されていないのは古いバージョンのpandasで、新しいバージョンであればマルチバイト文字が使われているファイル名でも読み込むことができる。
エラーの回避方法
原因が2つなので回避方法も2種類。
- CSVのファイル名に2バイト文字を使わない
- pandasのバージョンを更新する
CSVのファイル名に2バイト文字を使わない
CSVのファイル名に2バイト文字を使わずに、半角英数字でファイルを保存すればpandasから読み込むことができる。
import pandas as pd print("Read single-byte csv.") df = pd.read_csv("hoge.csv") print(df) # column1 column2 column3 # 0 1 2 3 # 1 2 3 4 # 2 3 4 5
参考:Python3.6のpandasで「Initializing from file failed」が起きた場合の対策 | 自調自考の旅
pandasのバージョンを更新する
コマンドラインからpandasを更新すれば、2バイト文字にも対応できるようになる。
pip install -U pandas
参考:pandasで「Initializing from file failed」というエラーが出てしまった時の対処法[anaconda] - Qiita
まとめ
pandasのread_csvでInitializing failedになってしまう場合は、
- CSVのファイル名に2バイト文字を使わない
- pandasのバージョンを更新する