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

Python DataFrame过滤失效:为何筛选price=0结果异常?

问题排查与解决方案

首先明确:如果你的代码是筛选price等于0的记录,结果中所有price显示为0是正常的过滤结果。如果你觉得“过滤功能未正常工作”,比如得到的记录数量不符合预期,或者实际需要筛选非0的记录,可从以下几个方向排查:

1. 数据类型不匹配

最常见的问题是price列的数据类型为字符串(object类型)而非数值型(int/float)。比如数据中的“0”存储为字符串"0",此时用数值0进行匹配会失效(仅能匹配数字类型的0)。

解决步骤:

  • 先检查数据类型:
    print(data['price'].dtype)
    
  • 如果是object类型,转换为数值型后再筛选:
    # 将字符串转换为数值,无法转换的会设为NaN
    data['price'] = pd.to_numeric(data['price'], errors='coerce')
    # 重新执行筛选
    df = data[data['price'] == 0][['course_title', 'price']]
    

2. 筛选条件写反

如果你实际需要筛选的是price不等于0的记录,那代码中的条件写错了,应该改为:

df = data[data['price'] != 0][['course_title', 'price']]

3. 字符串中存在隐藏字符

如果price列是字符串类型,部分“0”可能带有空格、制表符等隐藏字符(比如" 0"或"0\n"),导致直接匹配失败。

解决步骤:

  • 清理字符串中的多余字符后再转换类型:
    # 去除字符串两端的空白字符
    data['price'] = data['price'].str.strip()
    # 转换为数值型
    data['price'] = pd.to_numeric(data['price'], errors='coerce')
    # 执行筛选
    df = data[data['price'] == 0][['course_title', 'price']]
    

4. 验证原始数据

可以先查看price列的唯一值,确认数据中的实际情况:

print(data['price'].unique())

这能帮你快速判断是否存在异常值(比如"Free"、"N/A"等替代0的文本),这类情况需要先统一转换为数值0再筛选。


内容的提问来源于stack exchange,提问作者João Otávio Dimas Rocha Vianna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:25:34