如何用Pandas生成含当日日期与00:00:00时间的Datetime数据
生成当日日期+00:00:00格式的时间数据
你遇到的问题其实是pandas的显示逻辑问题——normalize()已经把时间部分重置为午夜0点了,只是默认显示时会省略全0的时间部分。下面给你几种实用的实现方式:
方法1:利用normalize() + 格式化输出
normalize()本质已经将时间设为00:00:00,用strftime()强制输出完整格式即可:
import pandas as pd # 生成带00:00:00的字符串格式结果 today_midnight = pd.to_datetime('today').normalize().strftime('%Y-%m-%d %H:%M:%S') print(today_midnight) # 输出示例:2022-07-20 00:00:00
方法2:直接构造午夜时间对象
用Python标准库的datetime模块组合当日日期和午夜时间,再转成pandas格式:
from datetime import datetime, date import pandas as pd # 构造当日午夜的datetime对象 today_date = date.today() midnight_time = datetime.min.time() today_midnight = datetime.combine(today_date, midnight_time) # 转成pandas的datetime类型(可选) pd_midnight = pd.to_datetime(today_midnight) print(pd_midnight.strftime('%Y-%m-%d %H:%M:%S'))
方法3:用Timestamp的floor方法
pandas的Timestamp提供了floor('D')方法,可以直接将时间向下取整到当日零点:
import pandas as pd today_midnight = pd.Timestamp.today().floor('D') print(today_midnight.strftime('%Y-%m-%d %H:%M:%S'))
补充验证normalize()的真实值
如果你怀疑normalize()的结果没有时间部分,可以用以下代码验证:
dt = pd.to_datetime('today').normalize() print(dt.hour, dt.minute, dt.second) # 输出:0 0 0
它的时间部分确实是全0,只是pandas默认显示时做了简化。
内容的提问来源于stack exchange,提问作者Mariana Rodrigues
相关产品推荐
相关产品推荐

