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

如何删除Pandas DataFrame中含数字的行?解决TypeError报错

解决Pandas删除含数字行时的TypeError问题

嘿,别慌!你遇到的这个TypeError: 'method' object is not subscriptable错误,本质是个小疏忽——你大概率把Pandas字符串方法的调用方式搞混了,把需要用括号()调用的方法当成了可下标访问的属性(用了[])。

先复盘错误根源

str.contains是Pandas Series的方法(函数),必须通过()传入参数来调用;如果你写成了str.contains[],Python会误以为你要对这个方法对象做下标访问,而方法本身是不支持下标操作的,所以直接抛出了错误。

正确的解决步骤

假设你的单列DataFrame长这样:

import pandas as pd

# 示例数据
data = {'content': ['猫主子日常', '狗狗123日记', '仓鼠饲养指南', '鹦鹉456训练', '兔子小知识']}
df = pd.DataFrame(data)

我们的目标是删除所有包含数字的行,也就是保留不含数字的行,正确的写法是:

# 用正则\d匹配任意数字,~表示取反(保留不匹配的行),na=False处理缺失值
clean_df = df[~df['content'].str.contains(r'\d', na=False)]

代码解释

  • r'\d':正则表达式,匹配0-9的任意数字(也可以用r'[0-9]',效果完全一致)
  • ~:取反运算符,把“包含数字的行”筛选结果反转,得到“不包含数字的行”
  • na=False:如果你的数据里有缺失值(NaN),这个参数会把缺失值当成不匹配处理,避免筛选结果出现NaN导致的异常

运行后你会得到目标DataFrame:

content
0      猫主子日常
2    仓鼠饲养指南
4      兔子小知识

避坑提醒

千万别再写成这样了(这就是触发你错误的写法):

# ❌ 错误:把contains()写成了contains[]
wrong_df = df[~df['content'].str.contains[r'\d']]

内容的提问来源于stack exchange,提问作者No one

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:03