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

Pandas数据操作报错:无法转换Series为int,如何统计2000年后出版书籍数?

问题修复方案

你的代码报错原因有两个:

  1. df["publication_date"][-4: 0]是对整个Series按行索引做切片,不是提取每个日期字符串的最后四位年份;
  2. int()无法直接转换整个Series,只能处理单个字符串值,因此触发TypeError。

下面是两种可行的修复方法:

方法一:直接提取年份字符串并转换比较

利用Pandas的str属性对每个字符串做切片,提取最后四位年份,转成整数后筛选统计:

# 方式1:用count()统计
df[df["publication_date"].str[-4:].astype(int) >= 2000]["publication_date"].count()

# 方式2:更简洁的sum()统计布尔值数量
(df["publication_date"].str[-4:].astype(int) >= 2000).sum()

方法二:转换为datetime类型后提取年份(更规范)

将日期列转换为Pandas的datetime类型,直接提取年份进行比较,这种方法能更好处理日期格式异常:

import pandas as pd

# 转换日期列,format指定输入格式为dd/mm/yyyy
df["publication_date"] = pd.to_datetime(df["publication_date"], format="%d/%m/%Y")
# 统计年份>=2000的数量
(df["publication_date"].dt.year >= 2000).sum()

如果数据中存在无效日期格式,可以添加errors='coerce'参数,将无效值转为NaT(缺失日期),避免报错:

df["publication_date"] = pd.to_datetime(df["publication_date"], format="%d/%m/%Y", errors="coerce")
(df["publication_date"].dt.year >= 2000).sum()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:05:58