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

