Pandas将字符串转换为datetime时不显示00:00:00时间部分问题
原因说明
该现象属于pandas的默认显示优化逻辑:当datetime序列中所有值的时间部分均为00:00:00时,打印序列、导出CSV的过程中pandas会默认隐藏时间部分,仅保留日期展示。但底层存储的依然是完整的datetime64类型,包含00:00:00的时间信息,因此单独打印单个时间值时会显示完整格式。
解决方法
场景1:打印/在终端展示时显示完整时间
方案A:临时转成指定格式字符串(不影响原数据类型)
执行以下代码得到格式化后的字符串序列,打印即可显示完整时间:
formatted_dt = datetime.dt.strftime('%Y-%m-%d %H:%M:%S')
方案B:修改全局显示配置(保留datetime数据类型)
调整pandas全局时间显示规则,后续所有datetime序列打印都会显示完整时间:
pd.set_option('display.datetime_format', '%Y-%m-%d %H:%M:%S')
场景2:导出CSV文件时保留时间部分
调用to_csv方法时指定date_format参数即可:
# 示例:导出完整数据框,自动给datetime类型的列加上指定时间格式 data_frame.to_csv('导出文件路径.csv', date_format='%Y-%m-%d %H:%M:%S', index=False)
内容的提问来源于stack exchange,提问作者Valip
相关产品推荐
相关产品推荐

