CSVやExcelでの治し方とかは見かけたのですが、データフレームとスプレッドシートの組み合わせを見なかったので備忘録を残します。
状況
以下のようなデータフレームを作成しスプレッドシートに書き出すことを想定していたとします。
A | B | C |
Hello | Mom | 5 |
Hi | Papa | 4 |
それがスプレッドシートに書き出すと以下のようになってしまいます。
A | B | C | B |
Hello | 5 | Mom | |
Hi | 4 | Papa |
本当に謎です。
ログをみるとBのカラムの値の場所にNaNと表示されていました。D列に値でてるんだからB列にちゃんと表示してくれよと思うのにしてくれない。
データフレームに挿入する値とヘッダーの値にずれがあるのかと何度も確認するもずれてはいない。
そもそもNaNの箇所は’ ‘をいれているので文字列の想定なので”となるはずでなぜNaNなのか。
そしてなぜヘッダーが増えているのか。
解決方法
import時のキーの文字をスペルミスしていたという単純な話でした。
df=df.append( {"A":result["A"],"D":result["B"],"C":result["C"]}, ignore_index=True)
上記の例はBと書くはずがDと書いてしまっている。実際はちょっと長めの英単語でしたが、調子に乗って手打ちしてしまって問題がおきてしまいました。
おまけ
df.isnull()を使うとNaNがカラム内に含まれているかわかるので、消えたかどうか確認するのに役立った。(毎回スプレッドシートに書き出すのも大変だったので)
おわり
スペルミスや誤字がないか注意深く作業したつもりだったのになぁ。こんな理由とはへこむ。
2度と同じ過ちを起こさないと思えば、使った時間も少しは意味があるのかな。
英語上手くなりたい限りです。