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

基于多列关键词筛选指定百分比范围的用户数据求助

筛选含特定百分比关键词的OnlyFans用户问题

我有一个形状为(31479, 8)的数据集,列名如下:

Index(['Tweet_ID', 'ID', 'Display_Name', 'User_Name', 'Id_URL', 'Description',
       'Content', 'Description_links'],
      dtype='object')

核心需求:筛选出Display_Name、User_Name、Id_URL、Description、Content列中包含top {任意百分比} onlyfans关键词的用户,其中百分比需在0.01%到9%之间(例如top 0.01% onlyfans、top 1.1% onlyfans)。

我尝试了硬编码特定百分比的筛选代码,但结果混入了99%这类不符合要求的数据:

f1 = ((data['Display_Name'].str.contains("top 0.01%")) |
      (data['Display_Name'].str.contains("top 0.02%")) |
      (data['Display_Name'].str.contains("top 0.03%")) |

      (data['Display_Name'].str.contains("top 0.05%")) |
      (data['Display_Name'].str.contains("top 0.1%")) |
      (data['Display_Name'].str.contains("top 0.2%")) |
      (data['Display_Name'].str.contains("top 0.3%")) |

      (data['Display_Name'].str.contains("top 0.7%")) |
      (data['Display_Name'].str.contains("top 1%")) |
      (data['Display_Name'].str.contains("top 3%")) |
      (data['Display_Name'].str.contains("top 5%")) |
      
      (data['Description'].str.contains("top 0.01%")) |
      (data['Description'].str.contains("top 0.02%")) |
      (data['Description'].str.contains("top 0.03%")) |
      (data['Description'].str.contains("top 0.05%")) |
      
      (data['Content'].str.contains("top 0.01%")) |
      (data['Content'].str.contains("top 0.02%")) |
      (data['Content'].str.contains("top 0.03%")) |
      (data['Content'].str.contains("top 0.05%")))

问题分析

  1. 硬编码覆盖不全:仅指定了少数几个百分比值,无法匹配0.04%、2.5%等符合要求的数值
  2. 未匹配完整关键词:只检查了top X%,没有限定后续的onlyfans,导致含top 99%的内容被误筛选
  3. 遗漏列:未对User_Name和Id_URL列进行筛选

解决方案

使用正则表达式匹配完整的关键词格式,同时限定百分比范围,覆盖所有符合要求的情况:

import pandas as pd

# 正则模式:匹配top 0.01%-9% onlyfans的所有合法格式
pattern = r'top (0\.(0[1-9]|[1-9]\d?)|[1-9](\.\d+)?)% onlyfans'

# 检查指定5列是否存在匹配内容,忽略大小写、处理缺失值
mask = (data['Display_Name'].str.contains(pattern, case=False, na=False) |
        data['User_Name'].str.contains(pattern, case=False, na=False) |
        data['Id_URL'].str.contains(pattern, case=False, na=False) |
        data['Description'].str.contains(pattern, case=False, na=False) |
        data['Content'].str.contains(pattern, case=False, na=False))

# 获取筛选后的数据集
filtered_data = data[mask]

正则说明

  • 0\.(0[1-9]|[1-9]\d?):匹配0.01到0.99之间的小数,例如0.01、0.1、0.99
  • [1-9](\.\d+)?:匹配1到9之间的整数或小数,例如1、3.5、9.9
  • case=False:支持不区分大小写的匹配(如Top 2% OnlyFans)
  • na=False:将缺失值视为不匹配,避免报错

内容的提问来源于stack exchange,提问作者Lalit Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:17:56