あるCSVデータをPythonで処理しようとしたら変な動きをする。
単純にpandasで読み込んでみると。。。
df = pd.read_csv(csv_filename, sep=',', header=0)
どうしたことか、なにも指定していないのに先頭の列がIndexとして認識されて、結果的にカラムの位置が1つズレてしまう。
念のため”index_col=None”を追加したが、やはりこれも同じ結果。
df = pd.read_csv(csv_filename, sep=',', header=0, index_col=None)
列をindexとして指定したいケースはあるけど、勝手にindexになるってどういう状況???
しばらく悩みながらCSVのファイルを見ていて気がついた。ヘッダー行だけ、行末にカンマ(,)がない。2行目以降はすべて行末にカンマが付いてる。
ヘッダー行 ○,○,○,○,○,○,○,○,○,○,○,○,○,○
2行目 □,□,□,□,□,□,□,□,□,□,□,□,□,□,
3行目 □,□,□,□,□,□,□,□,□,□,□,□,□,□,
4行目 □,□,□,□,□,□,□,□,□,□,□,□,□,□,
もしかしてこれが原因?まさかと思いながらヘッダー行の行末にカンマを追加したら、先頭の列がindexとして扱われなくなった。
CSV読み込む処理って、こういうところを見てるのか。
ちなみに、逆にヘッダー行優先ですべての行の行末からカンマを削除してもOK。