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

如何将DataFrame中float64类型的年份列转换为datetime格式?

问题原因

你之前用pd.DatetimeIndex(df['Year']).year得到1970的核心原因是:pandas会把传入的数字**当作Unix时间戳(即从1970-01-01 00:00:00开始的秒数)**解析。比如2025秒对应的实际时间是1970-01-01 00:33:45,取年份自然是1970,这和你解析年份的需求完全不匹配。

可行解决方案

针对你的两种需求,分别提供如下方案:

需求1:转换为补全年初日期的datetime格式

使用pd.to_datetime()并指定格式为%Y,pandas会自动将年份补全为当年的1月1日,空值会转为NaT:

import pandas as pd
import numpy as np

# 构造目标DataFrame
df = pd.DataFrame({'Year': [2025, 2024, np.nan, 2023, 2026, np.nan]})

# 转换为补全01-01的datetime格式
df['Year_datetime'] = pd.to_datetime(df['Year'], format='%Y', errors='coerce')

执行后df['Year_datetime']的结果为:

0   2025-01-01
1   2024-01-01
2          NaT
3   2023-01-01
4   2026-01-01
5          NaT
Name: Year_datetime, dtype: datetime64[ns]

需求2:保留仅年份的周期形式

如果希望直接以年份形式存储(同时保留时间序列语义),可以将转换后的datetime转为Period类型,格式指定为年份'Y':

# 转换为仅显示年份的周期类型
df['Year_period'] = pd.to_datetime(df['Year'], format='%Y', errors='coerce').dt.to_period('Y')

执行后df['Year_period']的结果为:

0    2025
1    2024
2     NaT
3    2023
4    2026
5     NaT
Name: Year_period, dtype: period[A-DEC]

该类型既直观显示年份,也支持pandas的时间序列相关操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:03:12