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

Pandas按日期条件删行时Series转int报错及高效写法咨询

错误原因

你运行报错的核心原因是df.START_DATE是pandas的Series对象(整列数据),而非单个字符串值,不能直接用Python原生的int()函数对整列做转换,同时你写的过滤逻辑也存在错误:小于2019和大于2020是互斥条件,用&(与)运算符永远筛选不到符合条件的行,应该用|(或)运算符。

解决方案

推荐两种向量化实现方式,效率远高于遍历行的写法:

方案1:START_DATE列为字符串类型时直接处理

用pandas的.str向量化字符串访问器提取年份,再转成整数做筛选,直接用布尔索引保留符合要求的行即可,无需手动调用drop:

# 保留年份在2019-2020之间的行
df = df[df['START_DATE'].str[:4].astype(int).between(2019, 2020)]

如果一定要用drop写法实现删除逻辑,写法如下:

df = df.drop(df[~df['START_DATE'].str[:4].astype(int).between(2019, 2020)].index)

方案2(更推荐):先转日期类型再筛选

将START_DATE列转为pandas datetime类型后,可以直接通过.dt访问器取年份,后续做其他日期相关操作也更灵活:

# 转日期类型
df['START_DATE'] = pd.to_datetime(df['START_DATE'])
# 按年份筛选
df = df[df['START_DATE'].dt.year.between(2019, 2020)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:42:02