Pandas value_counts()统计异常及布尔列数据清洗问题求助
Pandas value_counts()统计异常及布尔列数据清洗问题求助
嘿,这个问题我之前也碰到过!咱们一步步来拆解和解决~
为什么相同取值会被分成两组?
你看到value_counts()里出现两个1和两个0,核心原因是这些值不是纯数值,而是混了带空格的字符串——比如有的是"1",有的是" 1"(前面有空格),Pandas会把它们当成完全不同的字符串,自然就分开统计了。再加上还有"Y"这个异常值,就出现了你看到的结果。
解决步骤
我给你一套连贯的处理方案,能一次性搞定所有问题:
统一标准化字符串格式
先把列里所有内容转成字符串,再去掉前后的空格,确保所有1、0的格式一致:df["Column Name"] = df["Column Name"].astype(str).str.strip()用
astype(str)是为了兼容列里可能混有的数值类型,避免调用str.strip()时报错。替换异常值并转换为数值类型
把"Y"替换成"1",然后把整个列转成整数类型(毕竟你的业务逻辑里是用0/1表示Yes/No,数值类型更合理):df["Column Name"] = df["Column Name"].replace({"Y": "1"}).astype(int)验证结果
再运行统计命令,就能得到你想要的合并后的结果了:print(df["Column Name"].value_counts())输出应该就是:
1 110 0 122
为什么你之前的操作没生效?
你之前单独用replace(" 1","1")和replace("Y","1"),一是没覆盖所有可能的空格情况(比如有的值可能是"1 "后面有空格),二是没有统一转换类型,导致即使字符串统一了,后续可能还会有类型问题。而先做str.strip()再替换+转类型,就能一次性解决所有问题啦~
备注:内容来源于stack exchange,提问作者h25
相关产品推荐
相关产品推荐

