pd.read_csv()で先頭の列がIndexになってしまう

あるCSVデータをPythonで処理しようとしたら変な動きをする。

単純にpandasで読み込んでみると。。。

df = pd.read_csv(csv_filename, sep=',', header=0)

どうしたことか、なにも指定していないのに先頭の列がIndexとして認識されて、結果的にカラムの位置が1つズレてしまう。

「はい」はindexじゃないんだけどな

念のため”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。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です