You need to enable JavaScript to run this app. 使用pandas.cut拆分连续变量时出现数值跳过问题如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas.cut拆分连续变量时出现数值跳过问题如何解决

问题原因分析

你的代码核心错误是误用了replace()方法处理pd.cut()的返回结果:

  • pd.cut()执行后会返回和输入列长度完全一致的分箱结果序列,序列中每个元素是对应行数值所属的区间对象
  • replace()方法的作用是匹配原列中的指定值做替换,你直接把分箱结果序列传入replace(),相当于要求pandas在全是数值的原列里匹配区间对象做替换,这一匹配逻辑完全不成立,最终只有极少量异常匹配的结果被替换成了区间,绝大多数原值(包括99999、34095等)都被保留了下来,才会出现你看到的统计结果。
解决方法

直接把pd.cut()的返回结果赋值给目标列即可,不需要调用replace():

df = pd.read_csv(...)
# 直接赋值分箱结果,可赋值给新列避免覆盖原始数据
df['capital-gain_bin'] = pd.cut(df['capital-gain'], [0,45000,110000,150000], right=False, include_lowest=True)
df['capital-gain_bin'].value_counts()

如果需要覆盖所有可能的取值范围,避免超出[0,150000)区间的数值被标记为NaN,可以在分箱边界首尾添加无穷值:

df['capital-gain_bin'] = pd.cut(df['capital-gain'], [-float('inf'),0,45000,110000,150000,float('inf')], right=False, include_lowest=True)

执行后所有数值都会被分配到对应的区间,不会再出现原值单独统计的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:21:02