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

Python新手求助:CSV文件两列数值比较结果异常问题

解决CSV两列数值对比全输出no的问题

以下是几个最可能的原因和对应的解决方法:

  • 数据类型是字符串,不是数值
    CSV默认读取的所有单元格内容都是字符串,直接用字符串对比数值会出错(比如"10" > "9"会返回False,因为字符'1'的ASCII码比'9'小)。必须把列值转换成整数或浮点数再对比。
    示例代码:

    import csv
    
    # 替换成你的CSV文件名
    with open('data.csv', 'r', encoding='utf-8') as csv_file:
        reader = csv.DictReader(csv_file)
        for row in reader:
            # 根据实际数据类型选int或float,比如带小数就用float
            val1 = int(row['列1名称'])
            val2 = int(row['列2名称'])
            # 这里替换成你的对比逻辑,比如val1 >= val2
            print('yes' if val1 > val2 else 'no')
    
  • 列名不匹配
    代码里写的列名和CSV实际列名可能有空格、大小写差异(比如代码里是'Score',CSV里是' score '),导致取到空值或错误数据,对比结果全为no。可以先打印所有列名确认:

    with open('data.csv', 'r') as f:
        reader = csv.DictReader(f)
        print(reader.fieldnames)  # 输出实际列名列表
    

    或者读取时处理列名和值的空格:

    val1 = int(row['列1名称'].strip())
    val2 = int(row['列2名称'].strip())
    
  • 对比逻辑写反
    比如你想判断第二列大于第一列,但代码里写的是if val1 > val2,结果自然和预期相反。可以先打印几行的原始值,验证逻辑:

    print(f"列1值: {row['列1名称']}, 列2值: {row['列2名称']}")
    
  • 数据含特殊字符
    单元格里可能有隐藏字符、单位(比如"50%"、"123元"),导致转数值失败或得到错误结果。先打印原始行数据排查:

    print(row)  # 输出整行数据,看是否有异常内容
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:40:10