🗂

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