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

Pandas value_counts()统计异常及布尔列数据清洗问题求助

Pandas value_counts()统计异常及布尔列数据清洗问题求助

嘿,这个问题我之前也碰到过!咱们一步步来拆解和解决~

为什么相同取值会被分成两组?

你看到value_counts()里出现两个1和两个0,核心原因是这些值不是纯数值,而是混了带空格的字符串——比如有的是"1",有的是" 1"(前面有空格),Pandas会把它们当成完全不同的字符串,自然就分开统计了。再加上还有"Y"这个异常值,就出现了你看到的结果。

解决步骤

我给你一套连贯的处理方案,能一次性搞定所有问题:

  1. 统一标准化字符串格式
    先把列里所有内容转成字符串,再去掉前后的空格,确保所有1、0的格式一致:

    df["Column Name"] = df["Column Name"].astype(str).str.strip()
    

    用astype(str)是为了兼容列里可能混有的数值类型,避免调用str.strip()时报错。

  2. 替换异常值并转换为数值类型
    把"Y"替换成"1",然后把整个列转成整数类型(毕竟你的业务逻辑里是用0/1表示Yes/No,数值类型更合理):

    df["Column Name"] = df["Column Name"].replace({"Y": "1"}).astype(int)
    
  3. 验证结果
    再运行统计命令,就能得到你想要的合并后的结果了:

    print(df["Column Name"].value_counts())
    

    输出应该就是:

    1    110
    0    122
    

为什么你之前的操作没生效?

你之前单独用replace(" 1","1")和replace("Y","1"),一是没覆盖所有可能的空格情况(比如有的值可能是"1 "后面有空格),二是没有统一转换类型,导致即使字符串统一了,后续可能还会有类型问题。而先做str.strip()再替换+转类型,就能一次性解决所有问题啦~

备注:内容来源于stack exchange,提问作者h25

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:13:12