如何将带时区的日期列转换为13位timestamp时间戳
问题原因
Python内置的timestamp()方法默认返回秒级时间戳(共10位),而你需要的13位时间戳为毫秒级时间戳,二者相差1000倍的换算关系。
解决方案
方案1:直接修改现有代码
在timestamp()返回结果后乘以1000再转整数即可:
df['date_timestamp'] = df[['date']].apply(lambda x: int(x[0].timestamp() * 1000), axis=1)
方案2:高效矢量化实现(推荐)
逐行apply性能较低,数据量较大时建议使用pandas原生矢量化操作:
# 若date列尚未转换为datetime类型,先执行该行 df['date'] = pd.to_datetime(df['date']) # 批量计算13位毫秒时间戳 df['date_timestamp'] = (df['date'].dt.timestamp() * 1000).astype(int)
效果验证
以你给出的示例日期2021-09-02 06:00:10.474000+00:00为例,转换后得到的13位时间戳为1630562410474,符合需求。
内容的提问来源于stack exchange,提问作者Diop Chopra
相关产品推荐
相关产品推荐

