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

如何在Pandas DataFrame中筛选包含指定名称的记录?——含"Abbott"姓名筛选的报错排查

在Pandas DataFrame中筛选包含"Abbott"的姓名

嘿,我来帮你搞定这个问题!先说说你遇到的报错原因:你写的df.loc[name in df["Name"]]之所以报错,是因为name in df["Name"]只会返回一个单一的布尔值——它是在检查整个Name列里是否存在某个精确匹配的值,而df.loc[]需要的是和DataFrame行数完全对应的布尔数组(每一行对应一个True/False,告诉Pandas哪些行要保留)。单个布尔值没法作为索引使用,所以就出现了那个错误提示。

接下来给你几个正确实现需求的方法:

方法1:使用str.contains()(最推荐)

这是处理“包含子串”筛选的标准方式,它会对Name列的每个元素逐一检查是否包含"Abbott",返回一个和列长度一致的布尔数组,刚好可以用来索引:

# 直接用布尔索引筛选
filtered_df = df[df["Name"].str.contains("Abbott")]

# 或者用loc(效果一致,语义更明确)
filtered_df = df.loc[df["Name"].str.contains("Abbott")]

运行这段代码后,filtered_df就会包含所有姓名中带有"Abbott"的行,也就是你示例里的第1、2行数据。

额外补充:如果需要精确匹配

要是你之后有精确匹配姓名的需求(比如找完全等于"Abbott, Mr. Rossmore Edward"的行),可以这么写:

filtered_df = df[df["Name"] == "Abbott, Mr. Rossmore Edward"]

不过这次你的需求是“包含”,所以str.contains()才是最贴合的选择。

内容的提问来源于stack exchange,提问作者Max Melichov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 17:57:48