如何删除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
相关产品推荐
相关产品推荐

