如何高效筛选Pandas DataFrame中包含数字的行
筛选DataFrame中包含数字的行
你当前的代码无法正确筛选,核心问题是集合里存的是整数类型的数字,而df["text"]中的内容是字符串,字符型数字(比如"1")和整数1属于不同类型,导致判断逻辑永远不成立。
下面提供两种可行的解决方案:
方案1:修正集合类型匹配
把集合改为字符型数字,确保和字符串中的字符类型一致:
# 定义字符型数字集合 num_chars = set("0123456789") # 生成筛选掩码 has_number = df["text"].apply(lambda x: any(char in num_chars for char in x)) # 提取包含数字的行 filtered_df = df[has_number]
方案2:使用正则表达式(更高效)
利用pandas的str.contains方法结合正则\d(匹配任意数字),这是向量化操作,处理大数据量时性能更优:
# 直接筛选包含数字的行,na=False处理空值情况 filtered_df = df[df["text"].str.contains(r'\d', na=False)]
内容的提问来源于stack exchange,提问作者ADITYA PRATAP SINGH
相关产品推荐
相关产品推荐

