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

使用pandas处理鸢尾花CSV数据集筛选指定列值时报错求助

Pandas鸢尾花数据筛选报错排查方案

错误根因

  • 遍历逻辑错误:直接使用for row in iris遍历DataFrame时,返回的是数据集的列名而非逐行数据,无法取到每行的字段值做判断
  • 布尔判断歧义:iris["species"] == "setosa"返回的是整列的布尔值序列(Series),if语句无法直接判断一整列布尔值的整体真假,因此触发了ValueError: The truth value of a Series is ambiguous报错

最优解决方法

Pandas原生支持向量化筛选,无需手动写循环,代码更简洁执行效率也更高:

import pandas as pd

# 读取数据集
iris = pd.read_csv(r"C:\Users\username\Downloads\iris.csv")
# 双条件筛选:物种为setosa + petal_width大于1.7
# 注意:你需求描述中提到的筛选字段是petal_length,若需要可替换此处的petal_width
res = iris[(iris["species"] == "setosa") & (iris["petal_width"] > 1.7)]
# 打印符合条件的petal_width数值
print(res["petal_width"])

逐行遍历的正确实现(特殊场景可选)

如果你的业务场景必须逐行处理数据,可以使用iterrows()方法完成遍历:

import pandas as pd

iris = pd.read_csv(r"C:\Users\username\Downloads\iris.csv")
for idx, row in iris.iterrows():
    if row["species"] == "setosa" and row["petal_width"] > 1.7:
        print(row["petal_width"])

内容的提问来源于stack exchange,提问作者Qi'ra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 05:45:04