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

如何在Python中将仅含年月的浮点列转换为datetime类型?

解决pd.to_datetime解析日期为1970年的问题

你遇到的问题核心在于DATA列的数据类型是浮点数,而非字符串,导致pd.to_datetime把数值当成了Unix时间戳(纳秒单位)解析,才出现了1970年的奇怪日期结果。

解决方案

只需要先把DATA列转换成字符串格式,再用指定规则解析日期即可:

# 第一步:将浮点数列转为字符串,保证格式为YYYY.MM
df['DATA'] = df['DATA'].astype(str)

# 第二步:按指定格式解析日期
df['DATA'] = pd.to_datetime(df['DATA'], format='%Y.%m')

也可以合并成一行代码简化操作:

df['DATA'] = pd.to_datetime(df['DATA'].astype(str), format='%Y.%m')

执行后,你会得到正确的日期结果(比如2009-06-01,因为没有日的信息,pandas默认会补充当月1号)。

为什么之前会出错?

当pd.to_datetime接收数值类型输入时,它默认会将数值视为Unix时间戳(纳秒单位)。你的2009.06作为浮点数,被解析成了1970年1月1日零点之后的2009.06纳秒(约2微秒),所以才会出现1970-01-01 00:00:00.000002009这种结果。只有当输入是字符串时,format参数才会生效,按照你指定的%Y.%m规则去解析日期。

内容的提问来源于stack exchange,提问作者Marlon Henrique Teixeira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:23:02