🗂
Pandasの時刻データ結合時ではまった話."-"がto_datetimeで00:00になるのは罠すぎる
Pandasで時刻データ結合時ではまった。"-"がto_datetimeで00:00になるのは罠すぎる
背景
データ分析で業務で、pd.to_datetime()
を使った時刻データ変換を行う場面は多い。
最近、昔のプログラムをリファクタする話になりその最中、pd.to_datetime()
の挙動の知識不足でとんでもない目にあった。というかあっている。ゲロを吐いている。
" "(ブランク)は00:00扱いされる
pd.to_datetime("2024-01-01" + " " + " ", errors="coerce")
# => 2024-01-01 00:00:00
上のコードは日付文字列と時刻文字列を結合し、pd.to_datetime()
を使って時刻型に変換している。空の文字列は00:00:00に変換されるらしい。これはまだ理解できる。許せる。だけどーー
"-"は00:00扱いされる
pd.to_datetime("2024-01-01" + " " + "-",errors="coerce")
# => 2024-01-01 00:00:00
これは流石に知らんし...
errors引数設定してるのに...NaT
になってくれると思うでしょ普通...
何をどう解釈したら"-"が00:00:00になるんだよ....おえぇぇぇぇ
まとめ
異常値をよく把握せず処理を行うと、予期せぬ結果になるから注意しましょうねという話
私は当時、この仕様を知らずにコーディングし、今リファクタ中で絶賛進行中でゲロを吐いています
Discussion