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

如何将Pandas DataFrame日期列提取的年份转为整数?

解决DataFrame中MM/YY格式日期的年份筛选问题

我来帮你搞定这个问题!你遇到的核心问题是——Python内置的int()函数只能处理单个值,没办法直接把整个pandas Series(也就是你提取出的年份字符串列)转成整数类型。下面给你几种靠谱的解决方案:

方案1:用pd.to_numeric()批量转数值类型

这是pandas专门用来处理Series/列级数值转换的方法,既稳健又方便:

# 先把提取的年份转为数值类型,存成新列
ecom["Year"] = pd.to_numeric(ecom["Date"].str[3:])
# 筛选2025年(对应数值25)的数据
filtered_ecom = ecom[ecom["Year"] == 25]

或者直接一步到位,不用新增列:

filtered_ecom = ecom[pd.to_numeric(ecom["Date"].str[3:]) == 25]

如果你的日期列里有一些格式不规范的内容,还可以加errors='coerce'参数,把无效值转为NaN,避免报错:

pd.to_numeric(ecom["Date"].str[3:], errors='coerce')

方案2:用astype()强制转换

如果能确定所有提取出的年份字符串都是纯数字,也可以直接用astype()转换:

ecom["Year"] = ecom["Date"].str[3:].astype(int)
filtered_ecom = ecom[ecom["Year"] == 25]

不过这个方法容错率低,如果遇到非数字的字符串会直接报错,不如pd.to_numeric()稳妥。

方案3:更规范的做法——把日期转为datetime类型

其实最好的方式是直接把整个Date列转为pandas的datetime类型,这样后续做任何日期相关的操作都会更灵活:

# 按照MM/YY的格式解析日期
ecom["Date"] = pd.to_datetime(ecom["Date"], format="%m/%y")
# 直接筛选年份为2025的数据
filtered_ecom = ecom[ecom["Date"].dt.year == 2025]

这样处理后,你还能轻松实现按月筛选、计算日期差等操作,比单纯提取年份字符串要实用得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:46:32