如何对datetime.date类型的Series应用.dt.year获取年份数组?
解决datetime.date类型Series获取年份数组的问题
当你的Series存储的是Python原生datetime.date对象时,无法直接用.dt.year(因为.dt访问器仅支持pandas内置的datetime64[ns]类型),可以用以下几种方式获取完整年份数组:
方法1:转换为pandas datetime类型后使用.dt.year
把存储datetime.date的Series转换成pandas内置的datetime类型,就能正常使用.dt访问器:
import pandas as pd import datetime # 构造示例Series date_series = pd.Series([datetime.date(2023,1,1), datetime.date(2024,2,2), datetime.date(2025,3,3)]) # 转换为pandas datetime类型 dt_series = pd.to_datetime(date_series) # 获取年份数组 years = dt_series.dt.year print(years)
方法2:用apply提取每个元素的year属性
直接对Series中的每个datetime.date对象调用.year属性:
years = date_series.apply(lambda d: d.year) print(years)
方法3:列表推导式生成年份数组
用Python列表推导式遍历Series,提取每个元素的年份,再转成Series或数组:
years_list = [d.year for d in date_series] # 转成Series years = pd.Series(years_list) print(years)
三种方法都能得到完整的年份数组,其中方法1最推荐——转换后可使用pandas所有datetime相关操作,扩展性更强。
内容的提问来源于stack exchange,提问作者Xtiaan
相关产品推荐
相关产品推荐

