You need to enable JavaScript to run this app. Pandas基于Terms列含Error条件提取Terms Name列的唯一值列表
优惠活动
大模型
产品
解决方案
定价
更多

Pandas基于Terms列含Error条件提取Terms Name列的唯一值列表

报错根源

你当前代码抛出的ValueError来自末尾使用的.item()方法限制:

  • 该方法仅能对长度为1的pandas Series生效,作用是把单元素序列转为原生Python标量;一旦"Terms"列匹配到2个及以上的"Error"行,返回的Series长度大于1,就会因为无法强制转为单个值触发报错。
多匹配场景的实现方案

完全保留你原有的不区分大小写匹配、跳过空值的筛选逻辑,只需要把末尾不适用多值场景的.item()替换为去重逻辑,即可实现返回所有匹配行的"Terms Name"唯一值的需求:

import pandas as pd
import re

df = pd.read_excel('Test.xlsx')
# 筛选匹配行,取对应Terms Name列后去重
unique_matched_values = df.loc[
    df['Terms'].str.contains('Error', flags=re.IGNORECASE, na=False),
    'Terms Name'
].unique()

print(unique_matched_values)

该实现没有长度限制,无论匹配到1个还是N个"Error"行,都不会触发之前的报错,会正常输出类似['20th NM' 'NET 45']的预期结果。

可选调整逻辑
  • 若需要把结果转为可直接操作的原生Python列表,可在链式调用最后追加.tolist(),输出格式为['20th NM', 'NET 45']
  • 若需要统计每个唯一值对应的"Error"出现次数,可把.unique()替换为.value_counts(),直接返回每个"Terms Name"对应的匹配行数
  • 若需求不要求去重、仅需逐行取出所有匹配到的"Terms Name"值,去掉.unique()直接返回筛选后的Series即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 22:54:07