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

如何在Python DataFrame中移除含指定子串的行及代码问题排查

移除包含特定子串的行:修正你的Pandas代码

你卡在了生成正确的筛选掩码上——你的minus_testing_dashboard变量其实只是标记了哪些行包含testing-dashboard的布尔值序列(还不必要地做了reset_index),根本没有保留原始数据的列,所以后面调用minus_testing_dashboard['Machine ID']肯定会报错。咱们一步步来修正:

1. 生成正确的筛选掩码

你需要移除任意选中列中包含testing-dashboard或dev的行,所以首先要生成一个掩码,标记出哪些行需要保留(即不包含任何目标子串的行):

# 定义要排除的子串列表,方便后续修改
exclude_substrings = ['testing-dashboard', 'dev']

# 生成掩码:~表示取反,保留不包含任何目标子串的行
mask = ~selected_raw_data.apply(
    lambda row: row.astype(str).str.contains('|'.join(exclude_substrings)).any(),
    axis=1
)

这里用|把多个子串拼成正则表达式的“或”条件,一次匹配多个目标子串;astype(str)是为了确保所有列都能被str.contains处理,避免非字符串类型(比如数值列)导致的错误。

2. 过滤数据集并计算唯一值

用掩码过滤selected_raw_data,得到干净的数据集后再计算唯一的Machine ID数量:

# 过滤数据,drop=True避免生成多余的index列
filtered_data = selected_raw_data[mask].reset_index(drop=True)

# 现在可以正常获取Machine ID的唯一值了
unique_desktops = filtered_data['Machine ID'].nunique()
print(unique_desktops)

完整修正后的代码

import numpy as np
import pandas as pd

# 读取原始CSV
raw_data = pd.read_csv('No License Key.csv', delimiter=',', keep_default_na=False, low_memory=False)

# 选择需要的列,同时重置索引(drop=True避免保留原索引)
selected_raw_data = raw_data[['App Config', 'App Name', 'App UUID', 'Machine ID', 'Estimated Company']].reset_index(drop=True)
print(selected_raw_data.head(25))

# 定义要排除的子串
exclude_substrings = ['testing-dashboard', 'dev']

# 生成筛选掩码
mask = ~selected_raw_data.apply(
    lambda row: row.astype(str).str.contains('|'.join(exclude_substrings)).any(),
    axis=1
)

# 过滤得到目标数据集
filtered_data = selected_raw_data[mask].reset_index(drop=True)

# 计算唯一Machine ID数量
unique_desktops = filtered_data['Machine ID'].nunique()
print(unique_desktops)

额外小技巧

如果只需要检查特定列(比如只看App Name列),可以不用遍历整行,直接针对列操作,效率更高:

mask = ~selected_raw_data['App Name'].astype(str).str.contains('|'.join(exclude_substrings))

内容的提问来源于stack exchange,提问作者Steve Wood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:22:29