You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建保留三位毫秒精度的Pandas UTC DateTimeIndex

解决方案

核心思路

Pandas的Timestamp内部以纳秒精度存储,默认显示格式会根据实际值自动调整,但我们可以通过设置全局显示选项来强制统一输出三位毫秒格式,同时保留Timestamp类型和UTC时区信息。

步骤1:创建正确的UTC DateTimeIndex

首先将日期时间列从浮点型转为整数(避免浮点精度误差),再生成带UTC时区的索引:

# 提取日期时间列并转为整数类型
utc_df = df.iloc[:, 2:].astype(int)
# 创建带UTC时区的DateTimeIndex
datetimeindex = pd.to_datetime(utc_df, utc=True)

步骤2:设置统一的显示格式

通过Pandas的显示选项强制指定输出格式,确保所有时间都显示三位毫秒和UTC时区:

# 设置datetime的显示格式:年-月-日 时:分:秒.毫秒+时区
pd.set_option('display.datetime_format', '%Y-%m-%d %H:%M:%S.%3f%z')

效果验证

此时打印datetimeindex会得到统一格式的输出:

0   2023-11-22 10:15:34.345+00:00
1   2023-11-22 10:23:53.000+00:00
...
Length: 23179, dtype: datetime64[ns, UTC]

单个元素仍保持Timestamp类型,若需要单独控制显示,可使用strftime方法(不改变内部类型):

print(datetimeindex[0].strftime('%Y-%m-%d %H:%M:%S.%3f%z'))
# 输出:2023-11-22 10:15:34.345+0000

关键说明

  • Timestamp的内部存储精度无法修改(始终为纳秒级),但显示格式可通过全局选项统一控制,既满足视觉需求,又保留数据类型。
  • 转为整数是必要步骤:原数据的日期时间列为浮点型,直接转换可能因浮点精度丢失导致时间错误。

内容的提问来源于stack exchange,提问作者cicciodevoto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 08:25:14