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

Pandas中.dt访问器失效,但Python原生datetime函数可正常工作

问题成因分析
  • 核心原因是你的Date列并非Pandas标准的datetime64[ns]类型,而是object类型(即便列中多数元素是Python原生datetime对象)。
  • Pandas的.dt访问器仅对datetime64类型的Series提供支持,当列是object类型时,.dt无法正确识别并解析所有元素,就会出现某一位置后失效的情况。
  • 而apply(fn)是逐元素调用Python原生datetime的month属性,只要每个元素是有效的datetime对象,就能正常返回结果,不受列整体类型的影响。

验证与解决方法

  1. 先检查列类型:
print(df_final['Date'].dtype)

如果输出是object,就确认了类型问题。

  1. 转换为标准datetime类型:
df_final['Date'] = pd.to_datetime(df_final['Date'])

转换后再使用.dt访问器即可正常工作:

df_final['Year'] = df_final['Date'].dt.to_period('Y')
df_final['Month'] = df_final['Date'].dt.month

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 00:44:55