为何pd.to_datetime()处理后日期格式变更?已尝试参数无效
问题解析与解决办法
为什么格式会变更?
- 你用
pd.to_datetime()把字符串格式的日期转换成了pandas带时区的datetime对象(datetime64[ns, UTC]类型),而非保留原字符串格式。这种datetime类型有自身默认的显示规则,就是你看到的'2018-02-25 08:00:00+00:00'——和输入字符串只是展示形式不同,实际时间信息(含UTC时区)完全一致。 - 输入里的
Z是UTC时区标识,pandas解析后会将时区信息保留在datetime对象中,默认就用+00:00的形式展示时区。
如何恢复原显示格式?
分两种场景处理:
- 转为字符串格式存储:如果不需要datetime类型的时间运算功能,仅需固定格式的字符串,可通过
dt.strftime()把转换后的datetime对象转回指定格式的字符串:
import pandas as pd # 假设你的DataFrame名为df df['time'] = pd.to_datetime(df['time']).dt.strftime('%Y-%m-%dT%H:%M:%S.000Z')
- 保留datetime类型,仅修改显示格式:如果还要用datetime类型做时间操作,只是希望显示成原格式,可设置pandas全局显示选项:
pd.options.display.date_format = '%Y-%m-%dT%H:%M:%S.000Z'
设置后查看DataFrame时,datetime类型列会按指定格式展示,但实际存储的仍是datetime对象,不影响时间相关运算。
内容的提问来源于stack exchange,提问作者Taco22
相关产品推荐
相关产品推荐

