使用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
相关产品推荐
相关产品推荐

