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
相关产品推荐
相关产品推荐

