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

在Pandas中按computer_buy取值统计subject列?值的正确方法

问题解决:统计指定条件下的特定值数量

你的代码报错是因为toy_data['subject'].isnull().sum()会返回一个单个数值(标量),你再用布尔索引[toy_data['computer_buy']=='No']去索引这个标量,自然会触发索引错误——单个数字没法被这样索引。

正确实现分两种情况:

  • 如果subject里的?是实际字符串值:
    先筛选出computer_buy为No的行,再统计其中subject等于?的数量:
    count = (toy_data[toy_data['computer_buy'] == 'No']['subject'] == '?').sum()
    
  • 如果?是用来表示空值的标记:
    先把?替换成真正的空值(比如pd.NA),再筛选统计:
    import pandas as pd
    # 替换?为标准空值
    toy_data['subject'] = toy_data['subject'].replace('?', pd.NA)
    # 筛选后统计空值数量
    count = toy_data[toy_data['computer_buy'] == 'No']['subject'].isna().sum()
    

原理很简单:先缩小范围到符合computer_buy == 'No'的行,再在这个子集里统计目标值的数量,而不是先统计全量再去索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 02:45:35