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

如何将DataFrame中不同格式的timestamp转换为ISO格式?

解决Pandas中两种时间戳格式转指定ISO格式的问题

你可以通过先统一解析为datetime类型,再格式化目标字符串的方式实现需求,具体步骤如下:

1. 构造示例DataFrame(模拟你的数据)

import pandas as pd

df = pd.DataFrame({
    'input_timestamp': [
        '05-28-2022 14:05:30',
        '06-04-2022 03:04:13.002'
    ]
})

2. 解析时间字符串为datetime对象

Pandas的pd.to_datetime可以自动识别这两种带/不带毫秒的时间格式,直接转换即可:

df['datetime'] = pd.to_datetime(df['input_timestamp'])

如果需要明确指定时区为UTC,可追加utc=True参数:

df['datetime'] = pd.to_datetime(df['input_timestamp'], utc=True)

3. 格式化为目标ISO格式

目标格式要求保留三位毫秒(无毫秒时补000),并追加UTC时区标识+0000,通过字符串格式化实现:

# 先格式化到微秒级,截取前三位得到毫秒,再拼接时区标识
df['output_timestamp'] = df['datetime'].dt.strftime('%Y-%m-%dT%H:%M:%S.%f').str[:-3] + '+0000'

验证结果

执行上述代码后,输出结果与需求完全匹配:

print(df[['input_timestamp', 'output_timestamp']])
# 输出:
#         input_timestamp               output_timestamp
# 0  05-28-2022 14:05:30  2022-05-28T14:05:30.000+0000
# 1  06-04-2022 03:04:13.002  2022-06-04T03:04:13.002+0000

关键说明

  • pd.to_datetime自动兼容两种时间格式,无需手动区分处理;
  • %f占位符对应6位微秒,通过str[:-3]截取前三位即可得到标准的三位毫秒;
  • 末尾拼接+0000明确标识UTC时区,符合你需要的ISO格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:20:42