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

Python:如何降低Pandas中时间戳的毫秒精度至三位

问题描述

现有时间戳:

2023-07-12 21:12:21.940000

目前使用如下Pandas代码转换时间戳:

df_snowflake['last_activity']=df_snowflake['last_activity'].dt.strftime('%Y-%m-%d %H:%M:%S.%f')

需要将毫秒精度降低,最终得到格式如下的日期时间:

2023-07-12 21:12:21.940
解决方案

以下是几种实用的实现方式:

方法1:调整strftime格式字符串

直接在格式化时指定保留3位毫秒,将%f替换为%3f即可:

df_snowflake['last_activity'] = df_snowflake['last_activity'].dt.strftime('%Y-%m-%d %H:%M:%S.%3f')

%3f会自动截取微秒值的前3位,刚好对应毫秒精度。

方法2:字符串截取(适用于已转为字符串的时间戳)

如果last_activity已经是字符串类型,直接截取前23个字符即可(目标格式的总长度为23):

df_snowflake['last_activity'] = df_snowflake['last_activity'].str[:23]

方法3:先截断datetime精度再格式化

如果数据仍为datetime类型,可先将时间戳截断到毫秒级别,再进行格式化:

# 截断到毫秒
df_snowflake['last_activity'] = df_snowflake['last_activity'].dt.floor('ms')
# 格式化输出
df_snowflake['last_activity'] = df_snowflake['last_activity'].dt.strftime('%Y-%m-%d %H:%M:%S.%f').str[:23]

也可以使用round方法实现精度调整:

df_snowflake['last_activity'] = df_snowflake['last_activity'].dt.round('ms').dt.strftime('%Y-%m-%d %H:%M:%S.%3f')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:14