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

Python pandas根据DataFrame列条件打印内容报ValueError问题咨询

问题原因分析
  • 遍历逻辑错误:直接使用for i in df遍历DataFrame时,默认迭代对象是DataFrame的列名,而非每行数据,无法满足逐行判断的需求。
  • 条件判断存在两处错误:
    1. 列名匹配笔误:BHU是University列的取值,你错误写为匹配Age列,即使语法正确也无法得到符合预期的结果。
    2. 语法逻辑错误:df['Age']=='BHU'返回的是一整列布尔值构成的Series对象,Python的if语句无法直接判断一整个Series的真假,因此触发了歧义报错。
解决方法

逐行打印判断结果

使用iterrows()方法遍历每一行,获取单行字段值后再做判断:

for index, row in df.iterrows():
    if row['University'] == 'BHU' and row['City'] == 'Pune':
        print('correct')
    else:
        print('error')

批量生成判断结果(性能更优,适合大数据量)

使用pandas向量化操作替代循环,运行效率远高于逐行遍历:

# 新增列存储每行的判断结果
df['check_result'] = df.apply(lambda x: 'correct' if (x['University'] == 'BHU' and x['City'] == 'Pune') else 'error', axis=1)

# 若只需统计符合条件的行数,可直接筛选
valid_count = len(df[(df['University'] == 'BHU') & (df['City'] == 'Pune')])
print(f"符合条件的总行数:{valid_count}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:57:05