pandas DataFrame执行过滤代码后未永久删除含指定字符串行的问题
问题原因
你运行的筛选逻辑仅会返回符合条件的DataFrame副本,不会修改原始的df对象,所以执行后查看原df不会有变化。
解决方法
方法1:赋值覆盖原对象
这是最常用的写法,直接把筛选后的结果赋值给原变量即可:
# 基础写法,na=False用于处理列中存在NaN时的报错问题 df = df[df["column"].str.contains('text', na=False) == False] # 更简洁的取反写法,~在pandas中表示布尔值取反 df = df[~df["column"].str.contains('text', na=False)]
方法2:使用drop方法直接修改原对象
通过指定inplace=True参数可以直接在原df上做修改,无需额外赋值:
# 先筛选出需要删除的行的索引 drop_idx = df[df["column"].str.contains('text', na=False)].index # 执行删除 df.drop(drop_idx, inplace=True)
可选参数说明
如果需要调整匹配规则,可以给str.contains添加对应参数:
- 忽略大小写匹配:添加
case=False - 按普通字符串匹配而非正则:添加
regex=False - 指定匹配时的编码规则:添加
encoding="utf-8"
内容的提问来源于stack exchange,提问作者KOsterlund
相关产品推荐
相关产品推荐

