Pandas导出JSON后如何解析毫秒级时间戳索引为datetime类型
错误原因
Pandas to_json 方法导出时间类型字段时,默认输出毫秒级13位Unix时间戳,而Python标准库 datetime.fromtimestamp() 仅接收秒级10位时间戳作为入参,直接传入13位数值会超出合法范围,触发OSError。
解决方案
方案1:直接转换已有的13位时间戳
转换前先将毫秒级时间戳除以1000转为秒级即可,注意json解析后的时间戳键为字符串类型,需要先转成整型:
单值转换示例
from datetime import datetime epoch_time_ms = 1629417600000 # 整除1000转为秒级,如需保留毫秒精度可改为 /1000 datetime_time = datetime.fromtimestamp(epoch_time_ms // 1000)
批量转换解析后的字典
converted_data = { datetime.fromtimestamp(int(ts_key) // 1000): val for ts_key, val in parsed.items() }
方案2:导出阶段指定时间格式(更规范,避免单位歧义)
在调用 to_json 时指定 date_format="iso",直接导出标准ISO格式的时间字符串,后续转换更稳定,不会出现单位混淆问题:
# 导出时指定ISO时间格式 result = df.to_json(orient="index", date_format="iso") parsed = json.loads(result) # 直接用ISO格式转换 converted_data = { datetime.fromisoformat(ts_key): val for ts_key, val in parsed.items() }
内容的提问来源于stack exchange,提问作者bbartling
相关产品推荐
相关产品推荐

