実現したいこと
Pandasで以下の処理を行っていた際にこの問題に直面しました。
① Pandasで日時情報(YYYY-MM-DD HH:MM:SS)の列を持つDataFrameを作成。
② ①のDataFrameをCSVで保存。
③ Pandasで②のCSVを再読み込み。
④ 日時情報の列をto_datetime(format='%Y-%m-%d %H:%M:%S')でdatetime型に変換。
上記の処理を「2025-11-14 00:00:00、2025-11-14 00:00:00、2025-11-14 00:00:00…」のように0時0分0秒のデータのみで構成されるDataFrameに対して実行すると、
①の処理の時点で、00:00:00の部分を省略した「2025-11-14、2025-11-14、2025-11-14…」というDataFrameを作ってしまうので、④のto_datetime()で想定したformatと異なるためにエラーが返ってきてしまいます。
発生している問題・分からないこと
「該当のソースコード」のdataCやdataDを作成した場合に、"2025-11-XX 00:00:00"という結果を格納してほしいのですが、0時以降が省略されて"2025-11-XX"という結果が格納されてしまいます。
この理由と回避方法が知りたいです。
現状では応急処置として、dataCやdataDのようなDataFrameに対してはto_datetimeのformatを変えるという方法で対処しておりますが、スマートではないですし、根本的な理由が分からずモヤモヤしております。よろしくお願いします。
該当のソースコード
import pandas as pd #1.日時のデータフレームを作成 #--0時0分以外の日時が格納される場合 dataA = pd.DataFrame({"time": pd.to_datetime(["2025-11-14 03:00:00"])}) dataB = pd.DataFrame({"time": pd.to_datetime(["2025-11-14 00:00:00","2025-11-14 03:00:00","2025-11-14 06:00:00"])}) #--0時0分0秒のみが格納される場合 dataC = pd.DataFrame({"time": pd.to_datetime(["2025-11-14 00:00:00"])}) dataD = pd.DataFrame({"time": pd.to_datetime(["2025-11-14 00:00:00","2025-11-15 00:00:00","2025-11-16 00:00:00"])}) #2.CSVで保存 dataA.to_csv(r"saveA.csv",header=True,index=False) dataB.to_csv(r"saveB.csv",header=True,index=False) dataC.to_csv(r"saveC.csv",header=True,index=False) dataD.to_csv(r"saveD.csv",header=True,index=False) #3.再度読み込んでdatetime型に変換してみると… #--エラーなく読み込める ReadA = pd.read_csv(r"saveA.csv") ReadA["time"] = pd.to_datetime(ReadA["time"], format='%Y-%m-%d %H:%M:%S') ReadB = pd.read_csv(r"saveB.csv") ReadB["time"] = pd.to_datetime(ReadB["time"], format='%Y-%m-%d %H:%M:%S') #--to_datetimeでエラー #timeには"2025-11-14 00:00:00"が入っていてほしいのに0時以降が省略された"2025-11-14"が格納されているのでformatが合わずに失敗してしまう→なぜ? ReadC = pd.read_csv(r"saveC.csv") ReadC["time"] = pd.to_datetime(ReadC["time"], format='%Y-%m-%d %H:%M:%S') ReadD = pd.read_csv(r"saveD.csv") ReadD["time"] = pd.to_datetime(ReadD["time"], format='%Y-%m-%d %H:%M:%S')
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
同じことで悩んでおられる方を見つけることができませんでした。(あまりにも初歩的すぎる?)
補足
【バージョン情報】
Python:3.12.2
Pandas:2.2.1

回答1件
あなたの回答
tips
プレビュー