如何用Pandas与RegEx删除DataFrame中含链接的整行数据?
Pandas删除包含链接行的正确方法
你的原代码问题出在自定义函数cleanLinks里的index(col)用法错误——col是source列的单个字符串元素,根本没有index方法,而且这种方式也没法正确标记要删除的行索引。
针对8000行的数据集,用Pandas内置的字符串方法更高效,直接通过布尔掩码就能完成需求,两种可行方法如下:
方法1:直接过滤保留目标行
通过str.contains匹配包含链接的行,用~取反得到不包含链接的行,直接赋值给原DataFrame:
# 确保导入了必要库 import pandas as pd # 保留source列不包含http链接的行 df = df[~df['source'].str.contains(r'http\S+', na=False)]
方法2:直接删除指定行
先定位包含链接的行索引,再用drop删除:
# 定位包含链接的行索引 rows_to_drop = df[df['source'].str.contains(r'http\S+', na=False)].index # 删除这些行(inplace=True表示原地修改原DataFrame) df.drop(rows_to_drop, inplace=True)
参数说明
r'http\S+':正则表达式,匹配所有以http开头的连续非空白字符(也就是完整的链接)na=False:处理缺失值,将NaN值视为不包含链接,避免因缺失值引发报错
内容的提问来源于stack exchange,提问作者katsunobutsu
相关产品推荐
相关产品推荐

